본문 바로가기

분류 전체보기97

[JPA] 임베디드 타입 임베디드 타입 임베디드 타입 사용법 @Embeddable: 값 타입을 정의하는 곳에 표시 @Embedded: 값 타입을 사용하는 곳에 표시 기본 생성자 필수 임베디드를 사용하면 재사용이 가능하고 Period.isWork()처럼 해당 값 타입만 사용하는 의미 있는 메소 드를 만들 수 있습니다. @AttributeOverride: 속성 재정의 한 엔티티에서 같은 값 타입을 사용하려면 @AttributeOverrides, @AttributeOverride를 사용해서 컬러 명 속성을 재정의 합니다. 2023. 5. 1.
[JPA] 프록시와 연관관계(즉시로딩, 지연로딩, 영속성 전이) 프록시 객체의 초기화 Member를 조회할 때 Team도 함께 조회되는걸 막기 위해서 지연로딩을 사용한다. 이유는 쓸때없는 join을 해서 쿼리 조회 시간을 낭비 할수도 있기 때문입니다. 지연로딩 @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; @ManyToOne(fetch = FetchType.LAZY) //** @JoinColumn(name = "TEAM_ID") private Team team; .. } 지연로딩을 사용할 경우 실제 team을 사용하는 시점에서만 쿼리를 사용하게 됩니다. Team team = member.getTeam(); te.. 2023. 4. 29.
[JPA] 상속관계 매핑 관계형 데이터베이스는 상속 관계가 없습니다. 그래서 슈퍼타입 서브타입 관계라는 모델링 기으로 객체 상속과 유사하게 만들어 사용한다고 합니다. 상속관계 매핑: 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법은 크게 3가지가 있습니다. 각각 테이블로 변환 -> 조인 전략 통합 테이블로 변환 -> 단일 테이블 전략 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략 장점 테이블 정규화 저장공간 효율화 외래 키 참조 무결성 제약조건 활용가능 단점 조인을 많이 사용해서 저능 저하 데이터저장시 INSERT 쿼리 2번 호출 장점 조인을 사용하지 않아서 조회 성능이 빠름 단점 엔티티가 매핑한 컬럼은 모두 null을 허용해야 한다 모든 테이블.. 2023. 4. 23.
[JPA] 다대일 [N:1] 일대일 [1:1] 다대다 [N:M] 다대일 단방향 정리 • 가장 많이 사용하는 연관관계 다대일 양방향 정리 • 외래 키가 있는 쪽이 연관관계의 주인 • 양쪽을 서로 참조하도록 개발 일대다 단방향 정리 • 일대다 단방향은 일대다(1:N)에서 일(1)이 연관관계의 주인 • 테이블 일대다 관계는 항상 다(N) 쪽에 외래 키가 있음 • 객체와 테이블의 차이 때문에 반대편 테이블의 외래 키를 관리하 는 특이한 구조 일대다 양방향 정리 • 이런 매핑은 공식적으로 존재X • @JoinColumn(insertable=false, updatable=false) • 읽기 전용 필드를 사용해서 양방향 처럼 사용하는 방법 • 다대일 양방향을 사용하자 일대일 정리 주 테이블에 외래 키 • 주 객체가 대상 객체의 참조를 가지는 것 처럼 주 테이블에 외래 키를 두고.. 2023. 4. 5.