JPA 스터디 3주차

반응형
반응형

방향, 다중성, 연관관계 주인

JPA에는 단방향과 양방향이 존재한다.
양방향은 무조건 필요할까?

객체는 참조를 사용해서 연관관계를 탐색할 수 있는데 이것을 객체 그래프 탐색이라고 한다.

팀 -> 맴버
1. 팀에 맴버 한명을  추가한다.
2. 맴버가 어떠한 팀에 들어간다.

@JoinColumn 
외래키를 매핑할때 사용한다.

name : 매핑할 외래 키 이름
referencedColumnName 외래 키가 참조하는 대상 테이블의 컬럼명
foreignKey(DDL) 외래 키 제약 조건을 직접 지정할 수 있다.

연관관계 사용
  - 저장 
      JPA에서 엔티티를 저장할 때 연관된 모든 엔티티는 영속 상태여야 한다.
  - 조회
     객체 그래프 탐색 : 연관된 엔티티를 조회하는 것
     객체지향 쿼리 사용 JPQL 
  - 수정
     단순히 불러온 엔티티의 값만 변경해두면 트랜잭션을 커밋할 때 플러시가 일어나면서 변경 감지 기능이 작동한다.
     변경사항을 데이터 베이스에 자동으로 반영한다.

양 방향 연관관계
이게 무조건 적으로 과연 필요할지 고민해봐야한다.
 테이블 같은 경우는 외래키 하나로 양방향으로 조회가 가능하다.
하지만 객체는 양방향이라는게 불가능 하기 때문에 
서로 <---> 단방향 2개를 설정해 둬서 양방향 처럼 사용할 수 있다.

엔티티를 양방향 연관관계로 설정하면 객체의 참조는 둘인데 외래키는 하나다.?

연관관계 주인은 왜 필요 할까?
 테이블을 관리하기 위한 목적이라는데 생각좀 해야 겠다.
책에 적힌 내용에 따르면 연관관계  주인을 정한다는 건 외래 키 관리자를 선택하는 것이라고 한다.
그러니까 결국은 객체 지향과 테이블관의 복잡미묘한 그런 현상때문에 연관관계 주인을 따로 설정하는 게 아닐까라는 조심스런 추측을 해본다.
연관관계의 주인만이 데이터 베이스 연관관계와 매핑되고 왜래 키를 관리 할 수 있다. 반면에 주인이 아닌쪽은 읽기만 할 수 있다.

데이터베이스상에서는 다대일, 일대다 관계에서는 항상 다 쪽이 외래키를 가진다.
하지만 객체 입장에서는 둘다 입력이 되는게 좋다.
이에 관한 영상이다.
https://www.youtube.com/watch?v=brE0tYOV9jQ
곰곰히 생각해보면 연관관계 편의 메소드라고 있는데 이것을 활용하면 된다고 한다.

* 양방향의 장점은 반대방향으로 객체 그래프 탐색이 기능이 추가된 것 뿐이라고 한다. 결국 딱히 그럴사한 뭔가가 없는것 같다.

- 출처 : 자바 ORM 표준 JPA 프로그래밍

반응형

'JPA' 카테고리의 다른 글

JPA 스터디 5주차  (0) 2022.02.11
JPA 스터디 4주차  (0) 2022.02.02
JPA 스터디 2주차  (0) 2022.01.20
JPQL 중급 문법  (0) 2021.12.26
JPQL 기본 문법  (0) 2021.12.18

댓글

Designed by JB FACTORY