다대다관계 (가능하면 사용하지 말 것)
상속관계매핑 (@Inheritance)
양방향 연관 관계 (fk가 있는 곳을 연관 관계의 주인으로 정하기)
매핑
collection (list)
jpa 내장 타입
enum 타입
객체 - 관계형 DB (다대다 관계 가능 여부에서 갈림)
즉시로딩 VS 지연 로딩
하이버네이트
cascade 옵션
연관관계 편의 메서드
객체
: 둘 다 collection 가지게 해서 다대다 관계로 표현하기 가능
관계형 DB
: collection 을 양쪽에서 갖을 수 없음. 일대다 - 다대일 로 풀어주는 중간 테이블 필요
중간 테이블에 (ex. 수정일) 같은 추가적인 요소가 분명 들어가기 마련
그런데 @ManyToMany 사용하면 추가할 수 없음
실무에서 운영하기도 어려움
값타입 ex. Address (city, street, zipcode)
값 타입은 값이 변경 되면 안됨. 따라서 setter 는 만들지 않는게 좋음
-> 기본생성자, 생성자 만들기
즉시로딩은 내가 원했던 데이터만 가져오는게 아닌, 그거와 연관된 모든 데이터를 가져옴 -> 난리남 ..
따라서 모든 연관관계는 지연로딩으로 설정
즉시로딩
fetch = FetchType.EAGER
지연로딩
fetch = FetchType.LAZY
핵심적으로 컨트롤하는 쪽에 위치
변경된 domain 내용이 h2에 반영이 안됐음 (접속은 됐음. 이전 상태로 유지됨. Member만 있는 상태)
오류1.
Category 에서
items 에 @ManyToMany 했어야 했는데 @ManyToOne 했었음
오류2.
1번 해결 후,
8080이 이미 사용중이라고 떴음
https://blog.naver.com/PostView.naver?blogId=shinequasar&logNo=222283174204
위 링크 참고 해서 해결
-> 해결 방법 : 8080 kill

-> 해결 완료

엔티티에는 가급적 setter 사용하지 않기
모든 연관관계는 지연로딩으로 설정
컬렉션은 필드에서 바로 초기화하고 손대지 않기
테이블, 컬럼명 생성 전략
연관관계 편의 메서드
| 7. 웹 계층 개발 (0) | 2024.03.10 |
|---|---|
| 5. 상품 도메인 개발 (0) | 2024.03.06 |
| 4. 회원 도메인 개발 (0) | 2024.03.04 |
| 1. 환경 설정 (0) | 2024.03.03 |