연관관계 - 단방향

XingXi·2023년 12월 29일
0

JPA

목록 보기
10/23
post-thumbnail

🍕 Reference

자바 ORM 표준 JPA 프로그래밍 : 교보문고
자바 ORM 표준 JPA 프로그래밍 - 기본편 : 인프런
블로그 참조!
문제를 해결하기 위해서 JPA 에서 제공하는 기능을 사용해 보자
ER 다이어그램을 보면 알 수 있듯이 Member 테이블에서 Team 의 PK 를
FK 필드로 가지고 있다.

Team 은 여러명의 Member 를 가질 수 있다.
관계 차수를 보면
Team : Member = 1 : N 이다.
관계 차수를 사용하여 다음과 같이 작성해보자

Member

@Entity
public class Member
{
    @Id
    @GeneratedValue
    private Long id;

    @Column(name = "USER_NAME")
    private String userName;

    @ManyToOne
    @JoinColumn(name = "TEAM_ID")
    private Team team;

객체 참조를 위해
연관관계 차수를 살펴보면

Member 가 복수임으로
ManyToOne 을 선언한다.
@JoinColumn을 사용하여 대상 Entity 와
Mapping 할 외래키의 이름을 지정한다.

Team

@Entity
public class Team
{
    @Id
    @GeneratedValue
    @Column(name = "TEAM_ID")
    private Long id;

    private String teamName;

main

try
        {
            Team team = new Team();
            team.setTeamName("A TEAM");
            em.persist(team);

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

            // DB 에 저장하고 나서 DB 에서 조회하는 것을 보기위해 
            em.flush();
            em.clear();

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

            et.commit();
        }

객체 필드를 참조를 사용했기 때문에 Application 에서는
그래프탐색이 이루어지는 것을 볼 수 있다.
해당 메소드를 실행해보자.

결과

그래프 탐색에 대한 예외도 없으며 조회 시 JOIN쿼리를 생성하는 것을 볼 수 있다.

JPA 에서 연관관계 Mapping 을 어떻게 사용하는지 간략하게 알아봤다.
하지만 일반 Table 에서는 FK JOIN 를 사용하여 양방향으로 조회가 가능했다.
이것을 구현하려면 어떻게 해야할까?

0개의 댓글