728x90
준영속 엔티티란?
- 영속성 컨텍스트가 더는 관리하지 않는 엔티티
- DB에 한번 저장되었기에 식별자가 존재하지 않아
JPA가 변경감지를 하지 않아 수정을 하여도 DB에 업데이트가 일어나지 않음
준영속 엔티티를 수정하는 방법
1. 변경 감지 기능 사용
2. 병합(merge) 사용
1. 변경감지 기능사용 (=Dirty Checking)
-> 리파지토리에서 id를 기반으로 하여 데이터를 찾은 후, 값을 수정하는 방식이다.
-> @Transactional에 의해 save 필요없이 커밋을 통해 변경감지하여 변경된 내용을 flush 한다.
2. 병합(merge) 사용
-> 객체를 생성한 뒤, save 하는 시점에 위와 같이 merge()를 해준다.
merge의 단점
- 해당 모든 값들을 업데이트 하기 때문에 값이 세팅되지 않으면 null이 된다.
- 예를 들면, 위에서 Price라는 정보만 변경하고 싶다고, Price의 값만 업데이트 하면 나머지 값들이 null로 세팅된다.
출처 : ORM 표준 프로그래밍
728x90
'언어 > SpringBoot' 카테고리의 다른 글
[Spring] 챗 GPT 활용 프로젝트 구성 (0) | 2024.05.27 |
---|---|
Spring Boot & MySQL 연동하기 (1) | 2022.01.28 |
[JPA] 영속성 컨텍스트(EntityManager)와 엔티티의 생명주기 (0) | 2021.09.15 |
[JPA] 다양한 연관관계 매핑 - 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) (0) | 2021.08.17 |
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 10장 (0) | 2020.10.26 |