ssonzm.log
로그인
ssonzm.log
로그인
[JPA]연관관계 매핑 기초
Jimin
·
2023년 1월 2일
팔로우
0
JPA
0
JPA
목록 보기
2/6
객체아 테이블 연관관계의 차이를 이해
객체의 참조와 테이블의 외래 키를 매핑
객체를 테이블에 맞춰 모델링
외래 키 식별자를 직접 다룸
식별자로 다시 조회 -> 객체 지향적인 방법은 아님
객체 지향 모델링
객체 연관관계 사용
Member -> @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "TEAM_ID")
양방향 연관관계외 연관관계의 주인
양방향 매핑
테이블 연관관계는 외래키로 양방향이 다 존재함
사실상 테이블 연관관계는 방향이라는 개념이 없음, 외래키만 있으면 양쪽을 다 알 수 있음
Team -> @OneToMany(mappedBy = "team")
연관관계의 주인과 mappedBy
객체 연관관계: 2개
Member -> Team (단방향)
Team -> Member (단방향)
서로 다른 단방향 관계 2개임
둘 중 하나로 외래 키를 관리해야 함
테이블 연간관계: 1개
Member <-> Team (양방향)
외래 키 하나로 두 테이블의 연관관계 관리
연관관계의 주인
양방향 매핑 규칙
연관관계의 주인만이 외래 키를 관리
주인이 아닌 쪽은 읽기만 가능 (mappedBy 있는 쪽)
외래 키가 있는 곳(1:n에서 n쪽에)을 주인으로 정해라!
양방향 매핑시 가장 많이 하는 실수
연관관계의 주인에 값을 입력하기 않음
순수한 객체 관계를 고려하면 항상 양쪽 다 값을 입력해야 함
연관관계 편의 메소드를 생성
team.addMember(member);
양방향 매핑시에 무한 루프 조심
❤️ 정리
단방향 매핑만으로도 이미 연관관계 매핑은 완료
양방향 매핑은 반대 방향으로 조회(객체 그래프 탐색) 기능이 추가된 것 뿐
JPQL에서 역방향으로 탐색할 일이 많음
단방향 매핑을 잘 하고 양방향은 필요할 때 추가해도 됨(테이블에 영향 안 줌)
Jimin
팔로우
이전 포스트
[JPA]엔티티 매핑
다음 포스트
[JPA]다양한 연관관계 매핑
0개의 댓글
댓글 작성