일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Kafka
- hibernate 쿼리실행 순서
- intellij 플러그인 개발
- 컬럼명중복
- Java
- 로컬에서 플러그인 추가
- 플러그인 로컬 테스트
- 쓰기지연sql저장소 쿼리실행순서
- 쿼리실행순서
- intellij 플러그인 만들기
- IntelliJ
- 중복컬럼dto매핑
- java 로 intellij 플러그인
- ls -lgaf
- 쿼리테스트사이트
- Flush
- plugin local
- Stream
- sql 테스트 사이트
- JPA
- 스트림
- 자바
- port&adapter architecture
- Oracle
- 포트앤어댑터 아키텍처
- dto매핑우선순위
- group by group by rollup 차이
- 쓰기지연저장소
- error 2002 (hy000): can't connect to local mysql server through socket '/tmp/mysql.sock' (2)
- 오라클쿼리테스트사이트
- Today
- Total
목록Database ~ SQL (7)
개린이 탈출기
QueryDsl을 활용하여 데이터를 조회할 때, @Entity로 매핑된 클래스와 다른 형태로 데이터를 조회해야 할 때가 종종 발생한다.이때 활용하기 좋은 방법 몇가지를 소개하려고 한다. 기본 TUPLE 활용우선 말해두고 싶은 점은 이 방식은 QueryDsl을 사용하는 레이어 외의 다른 영역에서도 사용할 예정이라면 의존성 관리 측면에서 추천하지 않는 방식이다.Tuple이라는 클래스는 QueryDsl 이 제공하는 클래스이기 때문에 외부에서 사용하는 경우, 의존성에 영향을 미치게 되므로 내부에서 사용하는 경우에 활용하는 것이 좋아 보인다.List categoryTupleList = jpaQueryFactory .select( qCategoriesJpo.category..

ROLLUP 은 간단하게 표현하자면 총계 행을 하나 추가하는 것이라고 생각하면 될 것 같다. ROLLUP 그룹화 방법 이해하기 GROUP BY 와 ROLLUP 을 활용했을 때, 어떻게 그룹이 만들어지는지 확인해보겠다.일반적으로 GROUP BY 만 사용하여 그룹화할 컬럼을 지정했다면,오라클은 지정한 세 컬럼을 이용하여 데이터를 하나의 그룹으로 만든다. 그러나 ROLLUP 키워드를 활용하면 오라클은 다르게 그룹을 만들어준다.지정한 컬럼을 모두 이용한 그룹을 만들고 가장 마지막에 지정된 컬럼부터 하나씩 줄여가며 각각 그룹을 하나씩 만든다.위의 사진에 대해 설명을 추가해보자면 ROLLUP 대상 컬럼으로 A, B, C 컬럼을 지정하였으므로 오라클은ABC 컬럼으로 묶은 그룹, AB 컬럼으로 묶은 그룹, A 컬럼으로..

SELECT CATEGORYID , CATEGORYNAME , DESCRIPTION AS CATEGORYNAMEFROM CATEGORIESWHERE CATEGORYID = 9 만일 다음과 같은 쿼리를 조회했을 때 db 툴은 어떤 모습으로 데이터를 조회 시켜줄까? alias 를 사용하였기 때문에 db툴을 이용하여 조회했을 땐, 다음과 같은 모습으로 조회된다.즉, 컬럼명을 동일하게 뽑아서 보여준다. 그렇다면 MyBatis 를 이용하는 경우엔 객체에 컬럼명이 중복되는데, 어떻게 매핑해줄까? 결론부터 말하자면 alias 를 적용하기 전 실제 컬럼명이 더욱 우선순위를 갖게 되는 것 같다. public class TestDTO { private String categoryid; private Str..

개요데이터베이스에서 데이터를 조회했을 때, 하나의 컬럼에 대한 값이 여러 행으로 조회되는 경우, 이를 하나의 값으로 합치고 싶은 경우가 종종 발생한다.LISTAGG 와 GROUP_CONCAT는 이러한 작업에 사용할 수 있는 함수이다. 함수지원 데이터베이스LISTAGG ORACLE (11g 이상), PostgreSQL GROUP_CONCAT MySQL, MariaDB, SQLite 활용하기예를 들어 다음과 같은 데이터가 있다.아래의 데이터를 CategoryId 별 ProductName 을 콤마로 연결하여 하나의 컬럼에 묶어 보고 싶은 경우 위에서 언급한 함수를 사용할 수 있다. 기본동작LISTAGG 를 사용하는 방법은 다음과 같다. 참고로 정렬을 정의하고 싶지 않다면 WITHIN GROUP 은 제외해도 문..

간단한 쿼리 실험해보고 싶을때, db 구성해서 데이터베이스 만들고 하기 번거로울 때가 종종 있다.그럴 때 활용하기 좋은 사이트를 발견해서 포스팅을 해두려고 한다.W3Schools 의 SQL 실행 사이트쿼리도 실행할 수 있을 뿐만 아니라 기본테이블과 데이터가 존재해서 마음 편히 사용하기 아주 편리하다 SQL Tryit Editor v1.6WebSQL stores a Database locally, on the user's computer. Each user gets their own Database object. WebSQL is supported in Chrome, Safari, Opera, and Edge(79). If you use another browser you will still be able..
새로 생성한 유저이름과 디폴트로 사용하고싶은 스키마의 이름이 다른 경우가 발생할 수 있다.현재 jpa를 이용하고 있는데, 엔티티클래스에서 스키마를 매핑하는 등 여러 해결법이 존재하는 것 같으나,나는 db 측면에서 로그인한 유저가 특정 스키마로 연결되도록 설정하고 싶었다. 유저 생성- cmd 를 이용하여 관리자 계정으로 접속한다-- 관리자 계정으로 로그인. 비밀번호를 입력하면 ' 다음에 접속됨: ' 이라는 메시지가 뜬다.C:\Users\myname>sqlplus as sysdba;-- C## 생략ALTER SESSION SET "_ORACLE_SCRIPT"=true;-- 유저 생성CREATE USER 유저명 IDENTIFIED BY 비밀번호;-- 기존의 유저 비밀번호를 까먹었을 때 재설정ALTER USE..
JPA 를 활용하여 데이터를 관리하는 중인데 동일한 unique key 에 대한 delete 와 save 메서드를 사용하였더니 Duplicate Key 문제가 발생하였다. 결론적으로는 jpa를 통해 delete 관련 메서드를 호출해도 db에 동기화가 바로 일어나지 않고(직접 flush를 하거나 db 동기화가 일어나도록 하지 않는다면) 쓰기 지연 SQL 저장소에 쌓아두고 나중에 isnert 문과 함께 Db에 쿼리문을 보내준다. 이때 dbms 가 쿼리를 실행하기 전에 각 쿼리를 평가(최적화 및 실행 계획 등..)하는 과정에서 uniqueKey가 중복되는 insert문이 존재하므로 여기서 문제가 발생했던 것이다. 문제 원인실제 코드는 다음과 같다.public class MyEntity { @Id ..