orphanRemoval 옵션일 때 jdbc.batch_size 최적화
공지사항 하나에 이미지가 N개씩 저장되는 경우 JPA를 사용할 때 가장 흔하게 마주치는 일대다(One-to-Many) 연관관계이다.제목과 내용처럼 부모 엔티티(공지사항)의 필드값을 바꾸는 일은 @Transactional 한 줄로 끝난다. 트랜잭션이 종료될 때 Hibernate가 더티 체킹과 쓰기 지연을 통해 SQL을 자동으로 생성-실행해 주기 때문이다. 그런데 자식 엔티티(이미지)를 일부분만 삭제하거나 교체해야 할 때는 이야기가 달라진다.단순히 notice.getImages().removeIf(…) 만 호출하면 DB 레코드는 그대로 남게된다.반대로 imageRepository. deleteByIdIn()식의 벌크 쿼리를 쓰면 도메인 모델과 1차 캐시가 어긋나 버린다.이를 편리하게 해결해 주는 JPA 기능..