twocowsong

연관관계 수정 본문

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가 자동으로 처리합니다.

'IT > JPA' 카테고리의 다른 글

연관된 엔티티 삭제  (0) 2022.06.01
연관관계 제거  (0) 2022.06.01
연관관계 조회  (0) 2022.05.31
연관관계 사용  (0) 2022.05.29
@ManyToOne  (0) 2022.05.28