반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- spring MVC
- filter vs interceptor
- spring
- SpringMVC
- Validation
- springSecurityFilterChain 오류
- 필터의 정의
- application-properties
- 세션의 정의
- 401오류
- jpa
- 쿠키란
- abap value in field Data Class error
- 인터셉터의 정의
- Testcode
- controller
- MVC
- 구글 보안 api 활용
- 쿠키의 정의
- BindingResult
- 김영한
- 필터vs인터셉터
- 세션vs쿠키
- 유연한 컨트롤러1 - v5
- n+1
- 세션이란
- java.lang.AssertionError
- @Controller
- optional
- .orelseThrow
Archives
- Today
- Total
ABAP DUMP ERROR 24시
다양한 연관관계 매핑 본문
반응형
인프런 김영한의 자바 ORM 표준 JPA 프로그래밍 - 기본편을 공부하면서 정리한 글입니다.
종류
@ManytoOne
@OneToMany
@OneToOne
@ManyToMany
핵심 : 연관관계의 주인은 왜래키를 갖고 있는 객체가 되야한다.
@ManytoOne
Many 쪽에 연관 관계가 왜래키를 갖고있고 연관관계의 주인이 된다.
@OneToMany
One쪽이 주인인데 Many쪽에 왜래키를 갖고 있다.
@JoinColumn을 사용해서 꼭 명시해 줘야한다! 아니면 DB에 중간 테이블이 하나 생성된다,
엔티티의 왜래키가 다른 테이블에 있으므로 연관관계시 UPDATE SQL문이 한방 더 나간다.
@OneToOne
case 1 ) 주 table에 왜래키 있는 경우
=> 주 table 조회시 대상 table에도 데이터가 있는지 확인이 가능하다
=> but! 값이 없으면 왜래키에 null을 허용한다.
case2) 대상 table에 왜래키 있는 경우
=> 1:1 에서 1 : many 관계로 변경해도 테이블 구조는 유지 가능하다
=> 프록시의 한계로 인해 fetch = fetchType.Lazy 사용이 불가능 하다. // 튜닝의 어려움, 성능 최적화의 어려움
@ManyToMany == 쓰지말자.
Member 와 product를 바로 양방향 mapping해서 사용은 불가하다!
Member | Product |
Member_id(PK) username |
product_id(pk) name |
굳이 쓰고 싶다면 중간에 연결 table을 형성해서 1대 다 다:1 형식으로 풀어서 진행해야한다.
Member | Member_Projuct | Product |
Member_id(PK) username |
Member_id(pk,fk) product_id(pk,fk) orderMount orderdate |
product_id(pk) name |
중간 table만들면 나중에 운영의 어려움 존재, member_id를 조회했는데 orderdate 혹은 orderMount까지 조회될수 있으니 그냥 쓰지 마!
연관관계의 주인은 왜래키를 갖고 있는 객체가 되야한다를 만족하는
@ManyToOne을 이용하자.
반응형
'[WEB]Back-end > JPA' 카테고리의 다른 글
Proxy 어떻게 최적화해? (0) | 2022.01.14 |
---|---|
JPA Proxy가 뭐야? 왜 사용해? (0) | 2022.01.13 |
@Inheritance(strategy = Inheritance.Type.JOINED) 전략 (0) | 2022.01.08 |
@joinColumn, @mappedby, 양방향 Mapping시 주의해야할점 (0) | 2022.01.07 |
@Table과 @Column 의 차이 (0) | 2022.01.04 |
Comments