티스토리 뷰

TIL

JPA 더티 체킹

해미깨미 2021. 2. 3. 23:56

오늘 우아한 형제들의 이동욱씨가 지은 스프링 부트와 AWS로 혼자 구현하는 웹 서비스라는 책을 읽으면서 JPA의 더티 체킹이라는 개념에 대해 처음 알게 되었다.

 

트랜잭션 안에서 테이터베이스에서 데이터를 가져오면 이 데이터는 영속성 컨텍스트가 유지된 상태가 된다.

@Transactional
public Long update(Long id, PostsUpdateRequestDto requestDto) {

  Posts posts = postsRepository.findById(id).orElseThrow(
    () -> new IllegalArgumentException("해당 게시글이 없습니다. id = " + id)
  );

  posts.update(requestDto.getTitle(), requestDto.getContent());

  return id;

}

이 상태에서 해당 데이터의 값을 변경하면 트랜잭션이 끝나는 시점에 해당 테이블에 변경분을 반영한다.

 

데이터베이스에 update 쿼리를 날릴 필요 없이 findById() 메소드로 불러온 엔티티의 값만 바꿔주면 된다.

 


 

더티 체킹은 기본적으로 모든 필드를 업데이트 한다.

변경된 필드만 바꾸고 싶으면 엔티티 클래스 최상단에 @DynamicUpdate 어노테이션을 선언해주면 된다.

 

출처 : jojoldu.tistory.com/415

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함