1. JPA 엔티티 맵핑
1-1) JPA 엔티티 맵핑
JPA, 도메인 모델을 만들었으면 테이블에 어떻게 맵핑을 시킬지 정보를 Hibernate한테 주어야 함.
두 가지 방법으로 나눌 수 있고 1) 어노테이션 2) xml. 대부분은 어노테이션 방법으로 사용함.
1-2) JPA 구조
Hibernate 밑단에는 jdbc가 있음. 즉, Spring Data JPA → JPA → Hibernate → Datasource
1-3) 엔티티 맵핑
2. Value 타입 맵핑
2-1) 기본 타입 (String, Data, Boolean ...)
2-2) Composite Value 타입
2-2)-1. Address
위치정보로서 고유로 사용하는 경우에는 @Entity 타입으로 될 수 있으나
Account 안의 데이터 정보처럼 하나의 데이터로 취급하기 때문에 Composite Value 타입임.
Address
Account에서 한 번 사용할 경우
Console
Address는 'street', ‘zipcode’, ‘state’,으로 저장 됨.
Account에서 여러 번 사용할 경우
3. 1대다 맵핑
3-1) 1대다 맵핑
관계는 오직 2개의 Entity끼리의 관계임.
3-2) Account와 Study의 'Study'의 입장에서
→ 한 사람은 여러 개의 Study를 만들 수 있음.
→ 따라서 Study 입장에서는 ManytoOne임.
3-2)-1. Study
3-2)-2. JpaRunner
3-2)-3. Console
→ 관계에 대한 정보는 Study에 Foreign Key로 들어있음.
3-3) Account와 Study의 'Account'의 입장에서
→ Account에서 Study를 관리해보려고 함.
→ 자기가 만든 Study 목록을 가지고 있음.
3-3)-1. Account
3-3)-2. JpaRunner
3-3)-3. Console
→ 기본적으로 Account table에 있다고 생각하지만 그렇지 않음.
→ OneToMany는 Join Table로 만들어짐.
→ account_studies Table에 Foresign Key 'account_id'와 'sutdies_id'로
→ 만들어 짐.
4. 다대다 맵핑(양방향)
4-1) 다대다 맵핑(양방향)
4-2) 다대다 맵핑(양방향) 결론
4-3) Account & Study
4-4) JpaRunner
5. Convenience Method