JPA 연관 관계 - 객체 관계 모델링하기

목차

외래키객체 내 Field 값 으로 모델링

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

@Column
private String name;
}
@Entity
public class Member {

@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "MEMBER_ID")
private long id;

@Column(name = "USERNAME")
private String username;

@Column(name = "TEAM_ID")
private Long teamId; // 외래키를 Field 값으로 갖는다.
}

Member 가 소속된 Team 정보 가져오기

  • Member 가 소속된 Team 정보를 가져오기 위해서는
  • Member Id를 이용해 해당 Member 객체를 가져와 저장된 Team Id를 가져온 후
  • 해당 Team Id를 이용해 Member가 소속된 Team 을 조회해야 한다.
Team team = new Team();
team.setName("TeamA");
entityManager.persist(team);

Member member = new Member();
member.setUsername("member1");
member.setTeamId(team.getId());
entityManager.persist(member);

Member findMember = entityManager.find(Member.class, member.getId());
Long findTeamId = findMember.getTeamId();
Team findTeam = entityManager.find(Team.class, findTeamId);

객체 지향 스럽지 못한 모델링

위와 같이 모델링한 경우 한 객체 내에서 관련된 데이터를 가져오는 게 아닌 서로 다른 두개의 객체를 이용해 정보를 가져오기 때문에 객체 입장에서는 객체 지향 스럽지 못한 모델링이 된다.
뭔가 연관돼 있는 듯 하지만 결국에 서로 다른 두개의 객체 를 가져온 느낌이다.

Share