이 어노테이션을 엔티티에 적용하게 되면 Insert 쿼리를 날릴 때 null 인 값은 제외하고 쿼리문이 만들어진다.
@DynamicInsert
public class User {
}
@Test
void dynamicInsertTest() {
// given
var newUser = User.builder().username("user").build();
// when
userRepository.save(newUser);
// then
// 부분 생성 쿼리
}
Hibernate:
insert
into
users
(password, username, id)
values
(?, ?, ?) // 141ms 소요
Hibernate:
insert
into
users
(username, id)
values
(?, ?) // 133ms 소요
이 어노테이션을 엔티티에 적용하게 되면 Update 쿼리를 날릴 때 null인 값은 제외하고 쿼리문이 만들어진다.
@DynamicUpdate
public class User {
}
업데이트도 insert와 비슷한 10초 정도 차이의 결과가 나온다.
사용하는 이유
10ms 정도밖에 차이가 안나지만 필드가 많아질수록 더 차이가 많이난다.