연관관계 3

[JAVA] JPA 다양한 연관관계 매핑

연관관계 매핑 시 고려사항 3가지 다중성 : 일대일, 일대다, 다대일, 다대다 단방향, 양방향 연관관계 주인 다중성 ※ 보통 일대다, 다대일 이런 경우 맨 앞에 있는 애가 연관관계 주인이다. 1. 다대일 외래키는 항상 다대일 중 '다' 쪽에 존재한다. 따라서 객체 양방향 관계에서 연관관계의 주인은 항상 '다' 쪽이다. 양방향에서 '다' 쪽인 Member테이블이 Team 에 관한 외래키를 가지고 있으므로 연관관계의 주인이다. 2. 일대다 다대일 관계의 반대방향이다. 일대다에서는 엔티티를 하나 이상 참조 가능하므로 Collection, List, Map 중 하나 사용해야 한다. (실무에서 잘 사용하지 않는다.) '일' 이 연관관계의 주인이다. 2-1. 단방향 하나의 팀은 여러 회원을 참조 할 수 있다. (팀..

JAVA 2021.12.09

[JAVA] JPA 연관관계 매핑( 양방향 )

양방향 연관관계 @OneToMany, @ManyToOne 을 예로 들 수 있다. 객체에는 양방향이 없다. ( 단방향 두개를 잘 묶어서 양방향인 것 처럼 보이게 할 뿐! ) 그럼 객체의 경우 단방향 두개 중 외래 키 관리를 누가 해야할까?? → 연관관계의 주인(Owner) 가 외래키를 관리! 양방향 연관관계 매핑의 규칙 객체의 두 관계 중 하나를 연관 관계의 주인으로 지정( 외래키 소유주를 주인으로 하는 걸 권장 ) 일대 다 기준에서 보통 '다' 쪽이 연관관계의 주인이다. 연관관계 주인만이 외래 키를 관리(등록, 수정) 한다. ( 주인이 아닌 쪽은 읽기만 가능 ) 주인은 mappedBy 사용 불가 mappedBy 속성으로는 주인의 이름을 지정해준다. Member.java /* 연관관계 주인 */ packa..

JAVA 2021.11.17

[JAVA] JPA 연관관계 매핑( 단방향 )

핵심 : 객체지향스럽게 매핑하는 방법 예제 시나리오 - 회원과 팀이 있다. - 회원은 하나의 팀에만 소속될 수 있다. - 회원(N)과 팀(1)은 다대일 관계이다. 1. 객체를 테이블에 맞추어 모델링( 참조 대신 외래키를 그대로 가져와 사용한다. ) Member.java ( teamId 주목 ) @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String username; @Column(name = "TEAM_ID") private Long teamId; } JpaMain.java package hellojpa; import..

JAVA 2021.11.16