-
Spring과 Jackson에서 필드 부재와 명시적 null 구분하기
수정 API에서 필드에 null을 넣는 것과 필드를 아예 빼는 것은 다릅니다. 서버가 필드 부재와 명시적 null을 구분하지 못하면 null 규칙을 정할 수 없습니다. Jackson의 동작과 패치 본문 형식을 로컬에서 실행해 확인했습니다.
-
JPA에서 유니크한 관계에 유니크키를 걸었는데 Duplicate entry가 나는 이유: Hibernate flush 순서
컬렉션을 clear()로 비우고 새로 채우는 교체 패턴에 유니크키를 얹으면 Duplicate entry가 납니다. Hibernate가 삭제를 마지막에 실행하는 flush 순서를 공식 문서와 소스를 근거로 정리하고, 유니크키를 유지하면서 교체하는 방법을 다룹니다.
-
JPA 테스트가 CI에서 OOM으로 죽은 이유: Spring 컨텍스트 캐시 키와 H2
@DataJpaTest마다 서로 다른 H2 DB 이름을 주면 Spring 컨텍스트 캐시가 무력화되어 CI에서 OutOfMemoryError가 납니다. 원인인 컨텍스트 캐시 키(MergedContextConfiguration)의 동작과 해결 방법을 공식 문서, 소스를 근거로 정리합니다.
-
JPA N+1 문제와 세 가지 해결법 비교 (@EntityGraph / JPQL / QueryDSL)
JPA에서 N+1 문제를 해결하는 @EntityGraph, JPQL fetch join, QueryDSL을 검증 시점, 안전성, 적합한 상황 기준으로 비교합니다. 언제 무엇을 쓸지 정리했습니다.