목차
외래키를 객체 내 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; }
|
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);
|
객체 지향 스럽지 못한 모델링
위와 같이 모델링한 경우 한 객체 내에서 관련된 데이터를 가져오는 게 아닌 서로 다른 두개의 객체를 이용해 정보를 가져오기 때문에 객체 입장에서는 객체 지향 스럽지 못한 모델링이 된다.
뭔가 연관돼 있는 듯 하지만 결국에 서로 다른 두개의 객체 를 가져온 느낌이다.