- 목표
- 객체와 테이블 연관관계의 차이를 이해
- 객체의 참조와 테이블의 외래 키를 매핑
※ 인프런 또는 유투브 강의를 보고 진행하는 것을 추천합니다. 이전 소스와 구분 가능하도록 주석 및 파일을 분리 했으나 보기 힘들 수 있습니다.
- 객체를 테이블에 맞추어 데이터 중심으로 모델링할 경우, 협력 관계를 만들 수 없다.
- 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다.
SELECT * FROM MEMBERRELATION M JOIN TEAM T ON M.TEAM_ID= T.TEAM_ID
- 객체는 참조를 사용해서 연관된 객체를 찾는다.
- 테이블과 객체 사이에는 이런 큰 간격이 있다.
...
try
...
// 객체를 테이블에 맞추어 데이터 중심으로 모델링 진행
Team team = new Team();
team.setName("TeamA");
em.persist(team);
MemberRelation memberRelation = new MemberRelation();
memberRelation.setUserName("member1");
// member1 을 Team!에 소속시키고 싶다.
memberRelation.setTeamId(team.getId());
em.persist(memberRelation);
MemberRelation findMember = em.find(MemberRelation.class, memberRelation.getId());
Long findTeamId = findMember.getTeamId();
Team findTeam = em.find(Team.class, findTeamId);
...
- 단방향 연관관계
- 객체 지향 모델링( 객체 연관관계 사용 )
MemberRelation
...
// 단방향 연관관계
@ManyToOne
@JoinColumn(name ="TEAM_ID")
private Team team;
...
...
// 객체를 테이블에 맞추어 데이터 중심으로 모델링 진행
Team team = new Team();
team.setName("TeamA");
em.persist(team);
MemberRelation memberRelation = new MemberRelation();
memberRelation.setUserName("member1");
// member1 을 Team!에 소속시키고 싶다.
memberRelation.setTeam(team);
em.persist(memberRelation);
//영속성 컨텍스트가 아닌 DB에서 조회해 오고 싶다면 -S
em.flush();// 쿼리 실행
em.clear();// 영속성 컨텍스트 삭제
//영속성 컨텍스트가 아닌 DB에서 조회해 오고 싶다면 -E
MemberRelation findMember = em.find(MemberRelation.class, memberRelation.getId());
Team findTeam = findMember.getTeam();
System.out.println("findTeam = " + findTeam.getName());
...
책 추천
http://www.yes24.com/Product/Goods/18249021
http://www.yes24.com/Product/Goods/74219491
출처
https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
'JPA 프로그래밍' 카테고리의 다른 글
[자바 ORM 표준 JPA 프로그래밍] 실전 예제2 - 연관관계 매핑 시작( 3/3 ) (0) | 2021.07.11 |
---|---|
[자바 ORM 표준 JPA 프로그래밍] 연관관계 매핑 기초 - 양방향 연관관계 와 연관관계의 주인( 2/3 ) (0) | 2021.07.07 |
[자바 ORM 표준 JPA 프로그래밍] 실전 예제1 - 요구사항 분석과 기본 매핑 ( 3/3 ) (0) | 2021.07.04 |
[자바 ORM 표준 JPA 프로그래밍] 엔티티 매핑 - 필드와 컬럼 매핑, 기본키 매핑 ( 2/3 ) (0) | 2021.06.29 |
[자바 ORM 표준 JPA 프로그래밍] 엔티티 매핑 - 객체와 테이블 매핑, DB 스키마 자동 생성( 1/3 ) (0) | 2021.06.29 |