흰 스타렉스에서 내가 내리지

[JPA] DynamicUpdate 본문

Spring

[JPA] DynamicUpdate

주씨. 2023. 2. 9. 22:05
728x90

변경감지에서 JPA의 기본 전략은 엔티티의 모든 필드를 업데이트한다. 

 

필드가 많거나 저장되는 내용이 너무 크면 수정된 데이터만 사용해서 동적으로 UPDATE SQL을 생성하는 전략을 선택하면 된다. 

단 이떄는 Hibernate 확장 기능을 사용해야 한다.

 

@org.hibernate.annotations.DynamicUpdate

이 어노테이션을 사용하면 수정된 데이터만 사용해서 동적으로 UPDATE SQL를 생성한다. 

참고로 데이터를 저장할 때 데이터가 존재하는 (null 이 아닌) 필드만으로 INSERT SQL을 동적으로 생성하는 @DynamicInsert도 있다.

 

+

상황에 따라 다르지만 컬럼이 대략 30개 이상이 되면 기본 방법인 정적 수정 쿼리보다 @DynamicUpdate를 사용한 동적 수정 쿼리가 빠르다고 한다. 근데 한 테이블에 컬럼이 30개 이상 된다는 것은 테이블 설계상 책임이 적절히 분리되지 않았을 가능성이 높다.