[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'를 써서 제외 시켜주어서 이슈를 해결 할 수 있다.
'◽ JDBC > JPA & Hibernate' 카테고리의 다른 글
[JPA - Querydsl] BooleanBuilder란 무엇인가? ( 동적쿼리, 정적쿼리 ) (0) | 2019.10.29 |
---|---|
[이슈, Spring(JPA) - 어노테이션(Annotation)] @Setter을 쓰지 않는 이유 (0) | 2019.10.21 |
[이슈, spring - jpa] rest api의 통신방법 통일or다중화하기. (0) | 2019.10.21 |
[JPA] Entity와 Repository의 관계, Repository의 기본 메서드/추가 메서드 (0) | 2019.10.21 |
[JPA] 데이터베이스 스키마 생성(자동) 설정 - (데이터베이스 만들기(인식)) (0) | 2019.10.18 |
[Spring(JPA) - 어노테이션(Annotation) ] @Entity // @Table // @Id // @Column (0) | 2019.10.18 |
[JPA] JPA, Hibernate, Repository 비교 정리 (0) | 2019.10.11 |