출처: 자바 ORM 표준 JPA 프로그래밍
객체와 테이블을 매핑하기위해서 페러다임의 불일치를 해결해야 한다.
객체의 참조와, 테이블의 외래 키를 매핑해야 하는것이다.
JPA의 @JoinColumn를 사용하면 이를 쉽게 해결할수있다.
용어 정리, 설명
• 방향(Direction): 단방향, 양방향
-객체는 참조의 방향이 있다.
A 객체가 B 객체를 참조하면 단방향 매핑이 하나 있는것이며,
B 객체가 A 객체를 참조하면 단방향 매핑이 두개 있는것이고, 이를 양방향 매핑이라 부른다.
양방향 매핑을 하면,
1. 연관관계의 주인을 설정해주어야 한다.
2. 연관관계 편의 매소드를 작성해야 한다.
양방향 매핑은 나중에 필요하면 추가하는 식으로 작성하는것이 바람직하다.
• 다중성(Multiplicity): 다대일(N:1), 일대다(1:N), 일대일(1:1),다대다(N:M)
-테이블간에는 위와같이 다양한 관계가 있다. 이를 객체에 매핑해야한다.
이 중에서
일대다 매핑은 다대일로 대체하여 사용하고
다대다는 일대다 - 다대일 매핑으로 중간 엔티티를 하나 더 만들어서(중간 테이블을 엔티티로 승격하여) 사용한다.
일대일 매핑에서 외래키를 주 테이블에 둘것이냐, 대상 테이블에 둘것이냐 하는 문제는, 프로그래머와 DBA간에 논의가 필요하다.
• 연관관계의 주인(Owner): 객체 양방향 연관관계는 관리 주인
이 필요하다.
-연관관계의 주인은 MappedBy 속성을 이용하여 지정해준다.
오직 연관관계의 주인만이 외래키를 관리(등록, 수정)한다.
주인이 아니면 읽기만 가능하다.
연관관계의 주인은 외래키의 위치를 기준으로 정해야하며, 다대일 매핑에서 '다' 부분에 해당한다.
'Dev > JPA' 카테고리의 다른 글
[강의정리] 프록시와 연관관계 관리 (0) | 2021.05.18 |
---|---|
[강의정리] 상속관계 매핑 (0) | 2021.05.18 |
[강의정리] 엔티티 매핑 (0) | 2021.05.17 |
[강의정리] 영속성 컨텍스트의 동작 (0) | 2021.05.17 |
[강의정리] SQL 중심적인 개발의 문제점 (0) | 2021.05.17 |