선택적으로 수정하기??
프로그램을 작성하다보면 이런경우가 있다.
dto로 작성된 필드가 있을수도 있고 없을수도 있는 상황에서 해당필드값들을 선택적으로 업데이트하고 만약에 값이 들어와 있지 않다면 그대로 값을 두는것이다.
하지만 스프링에서 기존에 기본형태로 업데이트를 하는 방법은 Entity 객체에 값을 다 넣은다음 save함수에 Entity객체를 인자값으로 넣어주거나 아니면 그냥 리턴해서 더티체킹을 하는 방법이 있는데
이 두가지 방법은 위의 경우에서 적합하지 않다
왜냐하면
값이 들어오지 않는다면 null이 업데이트가 되기때문...
이럴때 사용하는것이 Optional 클래스를 활용하는 방법이 있다.
예시
public Optional<Todo> updateItem(Integer id, TodoUpdateItemDTO todoUpdateItemDTO) {
Optional<Todo> todo = this.todoRepository.findById(id);
todo.ifPresent(t -> {
if (todoUpdateItemDTO.getItem() != null) {
t.setItem(todoUpdateItemDTO.getItem());
}
if (todoUpdateItemDTO.getIsComplete() != null) {
t.setIsComplete(todoUpdateItemDTO.getIsComplete());
}
this.todoRepository.save(t);
});
return todo;
}
'Springboot' 카테고리의 다른 글
DB 커넥션풀 (0) | 2023.08.16 |
---|---|
select시 update쿼리 날라갈때 (0) | 2023.08.16 |
Spring boot-Cache Control Headers 하는법 (0) | 2023.08.14 |
JPA 복합키 작성기초 (0) | 2023.08.14 |
Springboot JUnit and Mockito (0) | 2023.08.14 |