변경감지와 병합
- 별도로 update 쿼리가 필요 없다.
- 플러시(flush()) 영속성 컨텍스트의 변경 내용을 DB에 적용
- 트랜잭션 커밋 → 내부 플러시 호출
- 엔티티와 스냅샷을 비교
- 변경된 엔티티가 있으면 update쿼리를 생성하여 lazy SQL 저장송 저장
- 저장소의 SQL를 데이터베이스에 전달
- 데이터 베이스 트랜잭션 커밋
병합 merge()
준영속 상태의 엔티티를 다시 영속 상태로 변경
Member mergeMember = em.merge(member);
- 준영속( detached) : 한번 영속화 되었지만 현재는 영속화가 되지 않은 상태
단점
- 모든 속성이 변경
- 병합시 해당 값이 없다면 모두 null로 업데이트 된다.
변경감지를 활용하자.