[JPA강좌,연관관계매핑]@OneToMany, mappedBy란?


@OneToMany

 

n  N:1 양방향관계에서 1쪽에서 N쪽으로의 방향성 또는 1:N 단반향에서는  컬렉션을 참조하므로 Set, List, Map을 사용할 수 있다.

n  1:N 관계는 잘 사용되지 않으며, 1:N(OneToMany) 단방향 보다는 M:1 양방향 관계를 사용하는 것이 좋다.

n  List는 순서가 있고 중복을 허락하는 자료구조 이므로 자료들의 순서를 알 수 있고정렬이 가능하다자료들의 순서(인덱스)를 알기 위해서는 별도 인덱스 칼럼(@OrderColumn)이 정의되어야 한다.

n  Map Key, Value 쌍으로 자료를 저장하는데 key설정을 위해 @MapKey를 사용하며실제 테이블의 칼럼을 지정할 때는 @MapKeyColumn을 사용한다.

n  @OneToMany 속성

ü  targetEntity : 연결을 맺는 상대 엔티티

ü  cascade : 관계 엔티티의 읽기 전략을 설정.

ü  mappedBy : 양뱡향 관계에서 주체가 되는 쪽(Many외래키가 있는 쪽)을 정의

ü  orphanRemoval : 연관 관례에 있는 엔티티에서 변경이 일어난 경우 DB 변경을 같이 할지 결정합니다. Cascade JPA 레이어의 정의이고 이 속성은 DB레이어 에서 직접 처리한다기본은 false

 

mappedBy

 

n  테이블은 외래키 하나로 두 테이블의 연관관계를 관리하는데 엔티티를 단방향으로 매핑하면 참조를 하나만 사용하고양방향 관계로 설정하면 객체의 참조는 양쪽에서 하나씩 둘인데외래 키는 하나이므로 두 엔티티 중 하나(OWNER)를 정해서 테이블의 외래키를 관리해야 하고 MANY쪽이 OWNER 이며 mappedBy @OneToMany쪽의 컬렉션 칼럼에 기술하여 OWNER가 아님을 정의한다.

n  mappdBy @OneToOne, @OneToMany, @ManyToMany 어노테이션에서 사용할 수 있으며 mappedBy가 없으면 JAP에서 양뱡향 관계라는 것을 모르고 두 엔티티의 매핑 테이블을 생성한다.

n  mappedBy OWBER 엔티티의 필드나 속성과 대응된다.

n  ManyToOne 양방향 관계에서 Many측에는 mappedBy요소를 사용할 수 없다.(MANY 쪽이 OWNER)

n  OneToOne 양방향 관계에서 OWNER는 반대쪽(INVERSE SIDE)에 대한 FK를 가지는 쪽이다.

n  ManyToMany 양방향 관계는 양쪽 중 아무나 OWNER가 될 수 있다.



출처 : http://ojc.asia/bbs/board.php?bo_table=LecJpa&wr_id=230

+ Recent posts