◽ JDBC/JPA & Hibernate

[Spring(JPA) - 어노테이션(Annotation) ] @DynamicUpdate



@DynamicUpdate


 공식문서 번역 요약 ( 주소 : https://www.baeldung.com/spring-data-jpa-dynamicupdate )

  실제로 엔티티에서 @DynamicUpdate를 사용할 때 Hibernate는 업데이트에 캐시 된 SQL 문을 사용하지 않습니다. 대신 엔터티를 업데이트 할 때마다 SQL 문이 생성됩니다. 이 생성 된 SQL에는 변경된 열만 포함됩니다.

  변경된 열을 찾으려면 Hibernate는 현재 엔티티의 상태를 추적해야합니다. 따라서 엔터티의 필드를 변경하면 엔터티의 현재 상태와 수정 된 상태가 비교됩니다.

이는 @DynamicUpdate와 관련된 성능 오버 헤드가 있음을 의미합니다. 따라서 실제로 필요할 때만 사용해야합니다.

  확실히이 주석을 사용해야하는 시나리오가 몇 가지 있습니다. 예를 들어 엔티티가 많은 수의 열이있는 테이블을 나타내고 이러한 열 중 몇 개만 자주 업데이트해야하는 경우가 있습니다. 또한 버전이없는 낙관적 잠금을 사용하는 경우 @DynamicUpdate를 사용해야합니다.

 

나의 정리

  간단히 말하면, save()할 시에 해당 테이블 컬럼의 default 값이 적용되지 않아 문제가 발생하는데, @Entity 객체에서 null인 필드는 "save()"할 시에 자동으로 제외하겠지라는 잘못된 생각에서 발생하는 이슈이다.

그렇기 때문에 '@DynamicUpdate'를 써서 제외 시켜주어서 이슈를 해결 할 수 있다.

푸터바