JPA

코드리뷰를 하던 중 동료 개발자 분 코드에서 1건 저장 행위만 하는 Service 레이어 메서드의 @Transactional 이 없는 것을 발견했습니다. 나: "어? 이게 있어야하지 않을까요?" 동료 개발자 : "1개 만 저장하는 건데 있어야 하나요?" 생각해 보니 딱히 이유를 찾지 못했습니다. 어차피 spring-data-jpa 구현체인 SimpleJpaRepository의 save 메서드에서 @Transactional 이 걸려있습니다. 분명 제가 본 강의에서는 서비스 레이어의 클래스에는 @Transactional(readOnly=true) 어노테이션을 붙이고 쓰기 메서드에는 @Transactional을 붙이는 방식을 많이 활용한다고 했는데 이유가 기억나지 않았습니다. 조금 더 검색해 본 결과 다음과 ..
HikariCP와 JPA로 프로젝트를 구성했는데, 갑자기 에러가 발생하였습니다. o.h.engine.jdbc.spi.SqlExceptionHelper : hikari-pool-1 – Connection is not available, request timed out after 30000ms. hikariCP의 옵션 중 connectionTimeout의 default 가 30000ms 인 것을 확인하고 왜 이런 일이 발생했는지 찾기 시작했습니다. hikariCP 의 Pool에 유지시킬 수 있는 connection 개수인 maximumPoolSize의 default는 10입니다. 에러의 발생 원인은 HikariCP 데이터베이스 커넥션 풀에서 커넥션을 가져오려고 시도했지만 사용 가능한 커넥션이 없거나, 요청이..
Batch Insert란? # insert INSERST INTO TABLE_A(name, phone) VALUES ('test1', '01000000001') # batch insert INSERST INTO TABLE_A(name, phone) VALUES ('test1', '01000000001'), VALUES ('test2', '01000000001'), VALUES ('test3', '01000000001'), VALUES ('test4', '01000000001'), VALUES ('test5', '01000000001') 만약 10,000 건의 insert가 필요한 경우, 1건 씩 DB에 요청을 하게되면 10,000 건의 커넥션을 맺게 된다. 서버에서 DB서버로 요청과 응답을 10,000번..
infitry
'JPA' 태그의 글 목록