본문 바로가기

Java/JPA

연관관계 매핑(단방향)

 

Member(n) : team(1) 매핑

 


@Entity @Getter @Setter
public class Member {
    @Id @GeneratedValue
    @Column(name = "MEMBER_ID")
    private Long id;
    @Column(name = "USERNAME")
    private String username;
    /*@Column(name = "TEAM_ID")
    private Long teamId;*/
    @ManyToOne
    @JoinColumn(name = "TEAM_ID")
    private Team team;
}

 

@JoinColumn의 name 값으로 select 쿼리 나갈때 join해서 나감.


left outer join
        Team team1_ 
            on member0_.TEAM_ID=team1_.TEAM_ID 
    where
        member0_.MEMBER_ID=?

이런식으로 내부 쿼리 수행함


 

EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");

EntityManager em = emf.createEntityManager();

EntityTransaction tx = em.getTransaction();
tx.begin();

try{//저장
   Team team = new Team();
   team.setName("TeamA");
   em.persist(team);

   Member member = new Member();
   member.setUsername("member1");
   member.setTeam(team);
   em.persist(member);

   // 영속성 컨테스트 말고 직접 쿼리 보고 싶을때 사용
   em.flush();
   em.clear();

    Member findMember = em.find(Member.class, member.getId());
    Team findTeam = findMember.getTeam();
    System.out.println("findTeam : "+findTeam.getName());

 

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

@MappedSuperclass  (0) 2023.11.17
상속관계 테이블 설계 전략  (0) 2023.11.17
연관관계 매핑(양방향)  (0) 2023.11.15
JPA 매커니즘  (0) 2023.11.12
JPA 도메인분석설계 @Entity  (0) 2023.11.09