본문 바로가기

전체 글

(92)
데이터 연관관계 항해 41일차 2022.02.19 1. 데이터 연관관계의 주인 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 객체 양방향 관계는 A->B, B->A 처럼 참조가 2군데 객체 양방향 관계는 참조가 2군데 있음. 둘중 테이블의 외래 키 를 관리할 곳을 지정해야함 연관관계의 주인: 외래 키를 관리하는 참조 주인의 반대편: 외래 키에 영향을 주지 않음, 단순 조회만 가능 2. 다대일 단방향 다대일의 반대는 일대다 A,B 각 엔티티가 있다면 A는 A.b으로 B엔티티를 참조할 수 있지만 반대로 B에서 A를 참조하는 필드가 없다. 그렇기에 A와 B는 다대일 단방향 연관관계다. === A 엔티티 ==== @Entity public class A { @Id @GeneratedValue @Column(name = ..
[TIL] 항해99 Day 40 항해 40일차 2022.02.18 # 6. 엔티티 설계 시 주의점 ### 엔티티에는 가급적 Setter를 사용하지 말자 - Setter가 모두 열려있다. 변경 포인트가 너무 많아서, 유지보수가 어렵다. 나중에 리펙토링으로 Setter 제거 ### 모든 연관관계는 지연로딩으로 설정 - 즉시로딩( EAGER )은 예측이 어렵고, 어떤 SQL이 실행될지 추적하기 어렵다. 특히 JPQL을 실행할 때 N+1 문제가 자주 발생한다. - 실무에서 모든 연관관계는 지연로딩( LAZY )으로 설정해야 한다. - 연관된 엔티티를 함께 DB에서 조회해야 하면, fetch join 또는 엔티티 그래프 기능을 사용한다. - @XToOne(OneToOne, ManyToOne) 관계는 기본이 즉시로딩이므로 직접 **지연로딩**으로..
[TIL] 항해99 Day 39 항해 39일차 2022.02.17 4. 회원 테이블 분석 MEMBER: 회원 엔티티의 Address 임베디드 타입 정보가 회원 테이블에 그대로 들어갔다. 이것은 DELIVERY 테이블도 마찬가지다. ITEM: 앨범, 도서, 영화 타입을 통합해서 하나의 테이블로 만들었다. DTYPE 컬럼으로 타입을 구분한다. 참고: 테이블명이 ORDER 가 아니라 ORDERS 인 것은 데이터베이스가 order by 때문에 예약어로 잡고 있 는 경우가 많다. 그래서 관례상 ORDERS 를 많이 사용한다. 5. 연관관계 매핑 분석 회원과 주문: 일대다 , 다대일의 양방향 관계다. 따라서 연관관계의 주인을 정해야 하는데, 외래 키가 있는 주문을 연관관계의 주인으로 정하는 것이 좋다. 그러므로 Order.member 를 ORDE..