Spring) Spring Data JPA insert query 시 default 값 적용시키기

오성민·2023년 2월 27일
0

spring

목록 보기
17/17
post-thumbnail

spring-data-jpa를 사용할 때에 insert 혹은 update 문을 사용할 때에 default인 값을 적용해야할 상황이 생겼다.

당연히 해당 필드에 null값을 넣어서 쿼리를 보냈는데 제외가 되는 것이 아닌

INSERT INTO user(
	name,
    age
) VALUES (
	null,
    ?
)

위와 같은 식으로 쿼리가 보내졌다.

해결법

1. @DynamicInsert or @DynamicUpdate

DynamicInsert 어노테이션은 insert 시에 null인 필드를 제외하고 보낸다.
이와 동일하게 DynamicUpdate 어노테이션은 update 시에 null인 필드를 제외한다.
이 어노테이션은 class level에 붙여주면 된다.

이 방법이 편리해서 이 방법을 사용했다. 하지만 이 방법은 유지보수를 할 때에 이해할 때에 불편하다고 판단이 되었다. 그래서 반드시 제외하고 보내려고 하는 필드에
@ColumnDefault
위 어노테이션을 붙여서 default로 무슨 값을 사용하는지 체크를 해줘야 할 것 같다.

2. @RrePersist or @PreUpdate

이 두 가지 어노테이션은 메소드 레벨에 사용하는 것이고, insert 혹은 update 되기 전에 사용되는 것이다.

이 방법을 사용하면 null일 때 default 값으로 변경해주는 코드를 작성하면 되는데 이 방법을 사용하게 되면 이해할 때에 더 어렵다고 판단해서 1번 방법을 사용했다.

profile
풀스택을 지향하는 개발자

0개의 댓글