IT/JPA
연관관계 수정
WsCode
2022. 6. 1. 16:27
이번에는 연관관계를 어떻게 수정하는지 확인해보겠습니다.
팀1 소속이던 회원을 새로운 팀2에 소속하도록 수정하겠습니다.
public static void updateRelation(EntityManager em) {
// 새로운 팀2 - INSERT
Team team2 = new Team("team2", "팀2");
em.persist(team2);
// 회원1에 새로운 팀2를 설정
Member member1 = em.find(Member.class, "member1");
member1.setTeam(team2);
}
실행되는 수정 SQL은 아래와 같습니다.
INSERT INTO TEAM(TEAM_ID, NAME) VALUES ('team2', '팀2');
UPDATE MEMBER
SET TEAM_ID = 'team2'
WHERE MEMBER_ID = 'member1'
em.update()메소드는 존재하지않습니다.
단순히 불러온 엔티티의 값만 변경해두면 트랜잭션을 커밋할 때 플러시가 일어나면 변경감지 기능이 작동합니다.
(영속성 컨텍스트에서 관리하기때문입니다. 스냅샵으로 저장해둔 엔티티랑 비교 후 변경을 감지합니다.)
그리고 변경사항을 DB에 자동으로 반영합니다.
이것은 연관관계를 수정할 때도 같은데 참조하는 대상만 변경하면 나머지는 JPA가 자동으로 처리합니다.