spring-data-jpa를 사용할 때에 insert 혹은 update 문을 사용할 때에 default인 값을 적용해야할 상황이 생겼다.
당연히 해당 필드에 null값을 넣어서 쿼리를 보냈는데 제외가 되는 것이 아닌
INSERT INTO user(
name,
age
) VALUES (
null,
?
)
위와 같은 식으로 쿼리가 보내졌다.
DynamicInsert 어노테이션은 insert 시에 null인 필드를 제외하고 보낸다.
이와 동일하게 DynamicUpdate 어노테이션은 update 시에 null인 필드를 제외한다.
이 어노테이션은 class level에 붙여주면 된다.
이 방법이 편리해서 이 방법을 사용했다. 하지만 이 방법은 유지보수를 할 때에 이해할 때에 불편하다고 판단이 되었다. 그래서 반드시 제외하고 보내려고 하는 필드에
@ColumnDefault
위 어노테이션을 붙여서 default로 무슨 값을 사용하는지 체크를 해줘야 할 것 같다.
이 두 가지 어노테이션은 메소드 레벨에 사용하는 것이고, insert 혹은 update 되기 전에 사용되는 것이다.
이 방법을 사용하면 null일 때 default 값으로 변경해주는 코드를 작성하면 되는데 이 방법을 사용하게 되면 이해할 때에 더 어렵다고 판단해서 1번 방법을 사용했다.