mybatis

DataBase/My-Batis

Out Of Memory Error. MyBatis Batch Insert 시 OOME 방지.

1. 일반적인 경우의 MyBatis Insert. 어떤 로직을 거쳐 생성된 객체 100만개를 DB에 insert 해야 하는 상황이다. private List getMemoList() { List list = new ArrayList(); // 100만번 loop를 돌아 100만개의 요소를 생성해 list에 add 한다. for (int i = 0; i < 1_000_000; i++) { MemoDTO memo = new MemoDTO(); memo.setMemberId(1); memo.setMemo("메모 테스트 입니다!메모 테스트 입니다!"); list.add(memo); } return list; } 위와 같이 MemoDTO 객체를 100만개 임의로 생성해서 List에 넣었다. 위 객체를 DB에 in..

DataBase/My-Batis

MyBatis 쿼리 로그를 이쁘게 정렬 해보자

MyBatis 쿼리가 위와 같이 불편하게 출력되고 있습니다. 한줄짜리 쿼리로그는 ? 를 아래 Parameters 에 출력된 '메모(String)'로 수동으로 넣어서 쿼리를 조회하면 되겠지만, 쿼리가 100줄이상에 parameter가 10개 넘어가면 일일이 찾아 바꿔 조회하는 것도 번거롭습니다. 파라미터가 바인딩된 쿼리로 pretty 하게 출력되도록 설정해보겠습니다. 1. build.gradle에 log4jdbc dependency추가. /** for MyBatis Log Beautifier. using log4jdbc */ implementation('org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16') 2. main/resources/ 하위에 log4jdb..

DataBase/My-Batis

[MyBatis/MySQL] Result Map을 조심 하세요.

- 문제 상황이 발생했다. 어떤 데이터를 조회하는데 일부가 누락되어 조회되는 상황발생. - 어떤 select 쿼리에 아래와 같이 limit 100이 적용 되 있다. pageable이 null 일 경우 조회결과에 limit 100을 건다. limit가 없을 시 해당쿼리의 실행결과가 122건이라고 할 때, limit가 적용되 있으면 몇건을 반환할까? limit 100 이니까 당연히 100건인것 같지만, 현실은 24건을 반환한다. 원인은 result Map 이 적용되 있기 때문. resultMap이란 결과값을 map에다 담아주는 역할을 함. resultMap을 찾아가보자. 해당 resultMap의 안에서 collection 작업을 통해서 grouping 해주기 떄문에 100개의 row가 24개로 결과가 나오게..

DataBase/My-Batis

[MyBatis/MySQL] 쿼리 작성시 Tip 모음

- 일반적인 SQL문과 마찬가지로 컬럼명 대소문자 상관없이 값을 조회, 수정 가능.

PCOSPD 100LRE SCRIE4A2
'mybatis' 태그의 글 목록