본문 바로가기
프레임워크/JPA

[JPA] 객체지향에서의 단방향 설정

by Yikanghee 2022. 3. 16.

JPA를 사용할때 객체와 테이블의 연관관계 차이를 아는것이 중요하다

 

테이블 연관관계에서는 PK, FK를 정해서 매핑하는데 객체에는 연관관계가 없다

그걸 객체지향으로 설정해주는 작업을 해야한다

 

그 과정에서 단방향 연관관계와 양방향 연관관계 설정을 해주어야 객체지향으로 모델링할 수 있다

@Entity
 public class Member { 
 @Id @GeneratedValue
 private Long id;
 @Column(name = "USERNAME")
 private String name;
 private int age;
// @Column(name = "TEAM_ID")
// private Long teamId;
 @ManyToOne
 @JoinColumn(name = "TEAM_ID")
 private Team team;

위와 같이 ManyToOne은 여러개의 Member : Team 을 n : 1 로 매핑할 수 있고

JoinColumn을 사용하면 FK 값을 사용할 수 있다

//팀 저장
 Team team = new Team();
 team.setName("TeamA");
 em.persist(team);
 //회원 저장
 Member member = new Member();
 member.setName("member1");
 member.setTeam(team); //단방향 연관관계 설정, 참조 저장
 em.persist(member)

위와같이 설정된 모델링을 READ하려면 다음과 같이 사용하면 된다

//조회
 Member findMember = em.find(Member.class, member.getId()); 
//참조를 사용해서 연관관계 조회
 Team findTeam = findMember.getTeam();

이 글은 김영한님의 JPA강의를 공부한 글입니다

댓글