2016년 7월 27일 수요일

(방학특강) [스프링Data JPA교육]N:1 양방향관계 저장,검색,삭제 실습,@ManyToOne, @OntToMany, mappdBy란 - 스프링실무교육학원

(방학특강) [스프링Data JPA교육]N:1 양방향관계 저장,검색,삭제 실습,@ManyToOne, @OntToMany, mappdBy란 - 스프링실무교육학원

N : 1 양방향

n  테이블 간의 관계는 N:1 로 동일하지만 방향성이 양방향 이다이전 단방향 에서 추가적으로 DEPT 쪽에서 EMP들을 참조하므로 양방향 관계가 된다.
n  @OneToMany쪽에 mappedBy 속성으로 자신의 객체참조를 가리키는 Owner 테이블(외래키 테이블)의 필드를 지정하면 된다. (Owner쪽은 @ManyToOne이 된다.) 양방향 관계에서 관계 연결처리를 하는 쪽외래키가 있는쪽() Owner라 한다.
n  양방향 관계에서 @ManyToOne은 Owning Side 이며, @OneToMany는 Inverse Side 이다.
n  양방향 관계에서 Inverse Side의 mappedBy는 @OneToOne, @OneToMany, or @ManyToMany 사용되고 Owning Side inversedBy @OneToOne, @ManyToOne, or @ManyToMany 사용되는 속성이다.
n  mappedBy로 선언된 emps 필드(inverse field, 주인의 반대쪽 필드)는 영속성 필드이기 보다는 EMP dept 필드에 의해 종속되는  필드로 데이터베이스 테이블에 칼럼으로 생성되지 않는다.
n  대신 emps DEPT 엔티티가 DB에서 검색될 때 자동으로 활성화 된다. (지연즉시 읽기에 따라 로딩되는 시점은 다름)
n  EMP 엔티티는 주인(OWNER)이며 주인 엔티티에서 일어난 변화만 DB에 반영되며 반대쪽 엔티티인 DEPT 엔티티의 변화는 DB에 저장되지 않으며 검색시에만 참조되어 계산된다.
n  Owner(EMP) dept필드는 인덱스로 이용되어 검색속도가 향상 될 수 있으며만약 DEPT 엔티티의 emps 필드가 자주 사용된다면 관계를 두 개의 단방향으로 바꾸어 영속 필드로 두는 것이 효율적이다.

댓글 없음:

댓글 쓰기