연관관계의 복잡성데이터 로딩 시 성능을 고려하여 일대다(@OnetoMany) 과 다대다(@ManyToMany) 연관관계지연 로딩일대일(@OneToOne) , 다대일(@ManyToOne)즉시 로딩을 기본 페치 전략으로 설정 일대다 다대다의 경우컬렉션의 데이터의 양이 많을 가능성이 높고이를 한 번에 로딩하는 것은 성능에 부정적인 영향다대일 일대일의 경우해당 엔티티가 로딩될 때 연관된 엔티티로 함께 로딩연관된 데이터의 양이 많지 않을 것으로 예상실무에서는 왠만하면 지연로딩으로 설정해놓고,어플이 거의 완성 단계에 접어들었을때 프로파일링, 성능 테스트를 통해 필요한 부분만 즉시 로딩을 적용한다. Uploaded by N2T
JPA 조인 전략package com.example.springboot3.test; import jakarta.persistence.*; import lombok.Getter; @Entity @Getter @Inheritance(strategy = InheritanceType.JOINED) // 상속 매핑은 부모 클래스에 선언 @DiscriminatorColumn(name = "DTYPE") // 부모 클래스에 구분 컬럼을 지정 public class Item { @Id @GeneratedValue @Column(name = "ITEM_ID") private Long id; private String name; private int price; } @Entity @DiscriminatorValue("A"..
DDL 생성 기능JPA 는 어플의 엔티티 구조를 바탕으로 DB 스키마를 자동으로 생성할 수 있는 기능을 제공한다.개발자는 별도의 DDL을 작성할 필요 없이 어플의 도메인 모델만 관리하면 된다.회원 이름에 대한 제약조건의 추가회원의 이름 필수 입력10자 초과 X 제약 조건 추가@Entity @Table(name="MEMBER") public class Member { @Id @Column(name = "ID") private String id; @Column(name = "NAME", nullable = false, length = 10) private String username; }DDLCREATE TABLE member ( id VARCHAR(255) NOT NULL, name VARCHAR(10) ..
일대일 관계 구성시객체지향 개발자들은 주 테이블에 외래 키를 선호한다.단방향 관계회원과 사물함의 일대일 관계MEMBER 테이블은 주 테이블LOCKER 테이블은 대상 테이블 @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String username; @OneToOne @JoinColumn(name = "LOCKER_ID") private Locker locker; }@Entity public class Locker { @Id @GeneratedValue @Column(name = "LOCKER_ID") private Long id; private String name; ..
개요@ManyToMany 를 사용하면, 연결 테이블의 관리를 자동화하여 도메인 모델의 단순화를 가능하게 함하지만,실무에서는 이러한 매핑을 그대로 사용하지 않는다.회원이 상품을 주문하는 경우 연결 테이블에 회원 아이디와 상품의 아이디만 저장하는 케이스만으로 충분치 않음.주문 수량, 주문 날짜 등과 같은 추가 정보가 필요하다..연결 테이블에 필드를 추가연결 테이블을 직접 매핑하는 연결 엔티티를 별도 생성해당 엔티티에 추가 필드를 매핑해야함.Member 엔티티에서..@OneToMany(mappedBy = "member") private List memberProducts = new ArrayList();MemberProduct 연결 엔티티까지@Getter @Setter @Entity @Table(name = ..
DB 각 테이블은 고유한 PK를 가짐JPA 사용시 해당 기본 키를 엔티티에 매핑가능하다.직접 할당@Id 어노테이션만 사용하여 기본 키 직접 할당 가능@Entity public class Member { @Id @Column(name = "ID") private String id; }데이터베이스 자동 생성 전략항상 어플의 기본 키 값을 직접 할당하는 적인 비효율적일 수 있음특히 높은 동시성 환경에서는 중복 키 충돌 위험이 있음.데이터 베이스가 제공하는 자동 생성 기능을 활용하는 것이 좋음데이터 베이스 기본 키 생성 전략..직접 할당어플리케이션에서 기본 키 할당IDENTITY기본 키 생성을 데이터 베이스에 위임TABLE키 생성 테이블 사용@GeneratedValue 어노테이션을 사용하면 원하는 기본 키 생성..