twocowsong

연관관계 사용 본문

IT/JPA

연관관계 사용

WsCode 2022. 5. 29. 21:58

 

연관관계를 등록, 수정, 삭제, 조회 하는 예제를 통해 연관관계를 어떻게 사용하는지 알아보겠습니다.

 

1. 저장 

연관관계를 매핑한 엔티티를 어떻게 저장하는지 아래의 코드로 알아보겠습니다.

public class TestSave {

   public static void main(String[] args) {
      EntityManagerFactory emf =
            Persistence.createEntityManagerFactory("jpa-study");

      EntityManager em = emf.createEntityManager();
      EntityTransaction tx = em.getTransaction();

      try {
         tx.begin();

         // 비즈니스 로직 시작
         // 팀1 저장
         Team team = new Team("team1", "팀1");
         em.persist(team);

         // 회원1 저장
         Member member1 = new Member("member1", "회원1");
         member1.setTeam(team); // 연관관계 설정 : member1 -> team1
         em.persist(member1);

         // 회원2 저장
         Member member2 = new Member("member2", "회원2");
         member2.setTeam(team); // 연관관계 설정 : member2 -> team1
         em.persist(member2);

         tx.commit();
      }
      catch (Exception e) {
         tx.rollback();
      }

   }

}

JPA에서 엔티티를 저장할 때 연관된 모든 엔티티는 영속 상태여야합니다.

 

중요한 부분을 분석해보겠습니다.

member1.setTeam(team); // 연관관계 설정 : member1 -> team1
em.persist(member1);

회원 엔티티는 팀 엔티티를 참조하고 저장했습니다.

JPA는 참조한 팀의 식별자(Team.id) 를 외래 키로 사용해서 적절한 등록 쿼리를 생성하였습니다.

이때 실행된 SQL은 다음과 같습니다.

INSERT INTO TEAM(TEAM_ID, NAME) VALUES ('team1', '팀1');
INSERT INTO MEMBER (MEMBER_ID, NAME, TEAM_ID) VALUES ('member1', '회원1', 'team1');
INSERT INTO MEMBER (MEMBER_ID, NAME, TEAM_ID) VALUES ('member2', '회원2', 'team1')

 

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

연관관계 수정  (0) 2022.06.01
연관관계 조회  (0) 2022.05.31
@ManyToOne  (0) 2022.05.28
@JoinColumn  (0) 2022.05.28
객체 관계 매핑  (0) 2022.05.28