JPA 에서의 업데이트 - 더티 체킹
Entity 에 대한
더티 체킹
을 통한 업데이트가 이뤄집니다.
JPA 에서는 Entity 를 업데이트 하기 위한 메소드가 별도로 존재하지 않습니다. JPA 에서의 업데이트는 엔티티 변경 과 더티 체킹 을 통해 업데이트가 이뤄집니다.
JPA 에서 엔티티를 변경하기 위해서는 변경하고자 하는 엔티티를 조회한 후 해당 엔티티의 값을 변경하면 트랜잭션을 커밋할 때 변경 감지(Dirty Checking) 가 동작해서 데이터베이스에 UPDATE SQL 이 실행하는 방식으로 Entity 에 대한 변경을 반영합니다.
|
Update 쿼리문 발생
update |
더티체크를 통한 업데이트의 한계
더티 체킹을 통한 업데이트는 변경된 Entity 개수만큼 Update 문을 실행합니다. 그렇기 때문에 변경된 Entity 가 100개라면 100번의 Update 문이 실행되는 문제점이 있습니다.
그래서 JPA 에서는 벌크 연산을 통해 한번에 여러 Entity 를 변경할 수 있도록 지원합니다.
벌크 연산을 통한 업데이트
벌크 연산을 통한 업데이트의 한계
벌크 연상의 경우 JPA 를 통해서 업데이트하는 방식이 아니기 때문에 EntityManager 에서 캐싱해놓은 데이터와 DB 에 저장된 데이터의 불일치가 발생합니다.