-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
Merge 관련해서 질문드립니다.
24.03.15 11:54 작성 조회수 86
0
안녕하세요 영한님,
정말 좋은강의 잘 듣고있습니다. Merge관련해서 질문이 하나있는데요..!
아래 두 method 모두 시작할때 persistence context가 비어있고 찾는 entity가 db에 있다고 가정할때 비슷한 (혹은 같은) flow로 진행될까요? 여기서 method parameter, Entity e,는 업데이트될 (id가 set되어있고 field가 업데이트 되어있는)객체입니다.
@Transactional
public void updateEntity(Entity e){
Entity foundEntity = em.find(Entity.class, e.getid());
foundEntity.setFieldOne("New Data");
}
@Transactional
public void updateEntity(Entity e){
em.merge(e);
}
Merge를 꼭 써야하는건 아니지만, 그냥 동작 메커니즘이 궁금해서 질문드립니다. Merge를 쓰는게 Update전에 항상 Select query로 db에서 객체를 조회하기때문에 쓰기를 지양하라고 하시는건가요, 아니면 merge를 쓸때 또 다른 downside가 있나요?
답변을 작성해보세요.
0
김영한
지식공유자2024.03.16
안녕하세요. SeokHoon Kim님
올려주신 코드는 내부에서 같은 방식으로 작동하기 때문에 사용에 차이가 없습니다.
그보다는 merge를 제공하는 이유에 맞게 사용하면 괜찮습니다.
merge는 준영속 상태가 된 엔티티를 다시 영속 상태로 만들 때 사용합니다.
해당 목적이라면 충분히 사용하셔도 괜찮습니다.
두번째 예시는 이 예시에 부합하는 것으로 보입니다.
감사합니다.
SeokHoon Kim
질문자2024.03.17
답변 감사합니다 🙂 강의가 너무 좋습니다. 5년동안 개발자하면서 배운것보다 강의 몇개보는게 훨씬 개념이 탄탄해지는 느낌이라 이미알고있는 부분까지도 모두 영한님 강의로 다시듣중입니다. 환절기 감기조심하시고 항상 좋은강의 부탁드릴게요!
답변 1