본문 바로가기

연관관계 매핑3

JPA - 다양한 연관관계 매핑(3) : 일대일 [1 : 1] 일대일 • 회원이 딱 하나의 락커를 가지고 있는 상황이다. 반대로 락커도 회원 한명만 할당 받을 수 있는 비즈니스 적인 룰이 있고이때, 둘의 관계는 일대일 관계이다, (일대일 관계는 그 반대도 일대일) • 일대일 관계는 다대일 단방향과 매우 유사하다 (유니크가 들어가냐, 들어가지 않냐의 차이) • 주 테이블이나 대상 테이블 중에 외래 키 선택 가능 • 주 테이블에 외래 키 (단방향, 양방향) • 대상 테이블에 외래 키 (단방향, 양방향) = 총 네 가지의 경우의 수 • 외래 키에 데이터베이스 유니크(UNI) 제약조건 추가 • 일대일에서는 어느 테이블FK를 가지면 그 테이블과 매핑되는 객체가 연관관계의 주인이 된다. 1-1. 주 테이블 왜래 키 단방향 public class Member{ @OneToOne.. 2022. 4. 10.
JPA - 다양한 연관관계 매핑(2) : 일대다 [1 : N] 1. 일대다 단방향 public class Team{ @OneToMany // (mappedBy = "team") 가 빠짐 @JoinColumn(name = "TEAM_ID") //@JoinColumn이 추가됨 private List members = new ArrayList(); // 단순 조회가 아닌 변경이 가능해짐 } public class Member{ ... // 아무것도 해줄 필요 없음 } Member member = new Member("member1"); em.persister(member); Team team = new Team("teamA"); team.getMembers().add(member); // 이런 코드가 가능해진다. em.persist(team); TEAM과 MEMBER의 .. 2022. 4. 9.
JPA - 연관관계 매핑 기초(1) : 연관관계가 필요한 이유, 단방향 연관관계 목표 1. 객체와 테이블 연관관계의 차이를 이해 2. 객체의 참조와 테이블의 외래 키를 매핑 (@JoinColumn) 3. 용어 이해 • 방향(Direction): 단방향, 양방향 • 다중성(Multiplicity): 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) • 연관관계의 주인(Owner): 객체 양방향 연관관계는 관리 주인이 필요 연관관계가 필요한 이유 데이터베이스 테이블과 객체는 근본적으로 차이가 있다. 객체를 테이블에 맞추어 모델링 할 경우 (연관관계가 없는 객체) 객체의 참조 대신 외래키를 그대로 사용 외래 키 식별자를 직접 다룸 식별자로 다시 조회, 전혀 객체지향적인 방법이 아님 객체를 테이블에 맞추어 데이터 중심으로 모델링하면, 협력 관계를 만들 수 없다. 테이블은.. 2022. 4. 9.