department 테이블과 student 테이블은 일대다 관계이다.
(학생 여러명이 학과 한 개에 소속되어 있기에)
그리고, student 테이블의 departmentId 필드는
소속 학과를 가르키는 외래키(foreign key) 이다.
보통 '다' 쪽에 외래키가 존재한다.
외래키가 존재한 '다' 쪽에 Single-Valued Association 을 구현하면 된다.
외래키가 포함된 student 객체에 department 멤버 변수를 구현하자.
* 학생 여러명이 학과 한 개에 소속되어 있다 => @ManyToOne
* 학생 테이블의 외래키는 departmentId 필드이다 => @JoinColumn(name= "departmentId")
* 학생이 속한 학과는 한개이다 => Department department
* departmentId 속성을 만들지 않음 주의!! * (외래키 속성은 생략한다)
Q. 위처럼 departmentId 외래키 대신 Department department 멤버 변수를
Student 엔터티 클래스에 정의하면 자동으로 일어나는 일?
=> JPA 엔진이 student 테이블에서 학생 레코드를 조회해서 Student 엔터티 객체를 생성할 때,
Student 객체의 department 속성에 학과정보도 채워준다.
즉, PA 엔진이 student 테이블에서 학생 레코드를 조회해서 Student 엔터티 객체를 생성할 때,
그 학생의 departmentId 외래키로, department 테이블도 조회해서,
Department 엔터티 객체를 생성하여,
Student 객체의 department 속성에 Department 객체도 채워준다.
cf. 교수님 강의자료
'JPA' 카테고리의 다른 글
JPA 기초 (0) | 2023.11.08 |
---|---|
23.09.06.이제 익숙해지기 시작한다. (0) | 2023.09.06 |
댓글