
class Member {
Long id; // MEMBER_ID 컬럼 사용
Long teamId; // TEAM_ID FK 컬럼 사용 -> Team 객체 참조 불가능
String userName;
}
class Team {
Long id; // TEAM_ID PK 사용
String name;
}
SQL 중심적인 개발을 한다면 객체를 테이블에 맞춰서 모델링 해야 한다.
Member 객체와 연관된 Team 객체를 참조하는 것이 아닌 Team 객체의 id 를 통해 조회한다.
// Member Select
Member member = findMember(1L);
Long teamId = member.getTeamId;
// Team Select
Team team = findTeam(teamId);
좋은 객체 모델링은 기대하기 어렵고 결국 객체 지향의 특징을 잃어버린다.
@Entity
class Member {
@Id
@GeneratedValue
Long id;
@ManyToOne
@JoinColumn(name = "TEAM_ID")
Team team;
String userName;
}
@Entity
class Team {
@Id
@GeneratedValue
Long id;
String name;
}
member.setTeam(team); // 회원과 팀 연관 관계 설정
em.persist(member); // 회원과 연관 관계 함께 저장
Member member = em.find(Member.class, memberId);
Team team = member.getTeam();