https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
Inflearn의 김영한 강사님 강의 [자바 ORM 표준 JPA 프로그래밍 - 기본편] 을 보고 정리했습니다.
테이블에 맞춰 외래키를 그대로 가져오며 설계하는 방식이 아니라 좀 더 객체지향 스럽게 개발하는 방법
객체가 지향하는 패러다임과 관계형DB가 지향하는 패러다임이 다르기 때문에 그 차이를 이해해야 한다.
시나리오
@Entity public class Member { ... private Long TeamId; // 외래키 }
member.setTeamId(team.getId()); // 객체지향스럽지 못하다. // member.setTeam(...) 이 되는게 더 좋을것 같은데
findMember = em.find(Member.class, member.getId); findTeamId = findMember.getTeamId(); findTeam = em.find(Team.class, findTeamId); // 필요할때마다 계속 JPA로 요청해야한다.
member
와 team
간의 협력 관계가 만들어지지 않는다. member
를 찾았지만, member
가 속한 team
을 찾기 위해 한번 더 요청해야 한다.public class Team {
...
}
@Entity
public class Member {
...
@ManyToOne // 다대일 관계에서 멤버가 '다' 팀이 '일'
@JoinColumn(name = "TEAM_ID") // Team 객체와 TEAM_ID 외래키와 연관관계 매핑.
private Team team;
}
member.setTeam(team);
findMember = em.find(Member.class, member.getId) Team findTeam = findMember.getTeam(); // 멤버를 통해 바로 팀을 찾을 수 있다.
Team newTeam = em.find(Team.class, someTeam.getId) findMember.setTeam(newTeam)