본문 바로가기

Java/JPA43

[SpringBoot_JPA_1] FetchType.LAZY, EAGER 이 글은 김영한의 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발]을 수강하며 정리한 글입니다. 🟦 기본 환경: IDE: IntelliJ, Language: Java FetchType.EAGER(즉시 로딩): 데이터 조회 시 연관 데이터까지 한 번에 조회 : @OneToMnay default : @ManyToMnay default @OneToOne FetchType을 선언하지 않을 경우, Default값인 EAGER로 선언되어 Delivery table 조회 시 연관관계에 있는 Order table까지 함께 조회 FetchType.LAZY(지연 로딩): 필요한 데이터만 선별적으로 조회 : @ManyToOne default : @OneToOne default @OneToOne FetchTyp.. 2023. 5. 25.
[SpringBoot_JPA_1] JPA Entity Default Constructor 이 글은 김영한의 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발]을 수강하며 정리한 글입니다. 🟦 기본 환경: IDE: IntelliJ, Language: Java 매개변수가 있는 생성자를 사용할 경우, 기본 생성자가 자동으로 만들어지지 않음 🚨 JPA에서 Entity 생성 시, 매개변수가 있는 생성자를 만들 경우, 기본 생성자를 필수적으로 기재해야함 → JPA는 DB 값을 객체 필드에 주입할 경우, "기본 생성자"로 객체를 생성한 이후 "Reflection API"를 사용하여 값을 매핑 → Reflection API는 생성자의 인자정보는 갖고 올 수 없으므로 매개변수가 있는 생성자 작성 시, 기본 생성자를 작성하여 객체를 생성할 수 있는 환경을 제공해야 함 ⭐ Reflection API.. 2023. 5. 23.
[SpringBoot_JPA_1] @JoinTable 이 글은 김영한의 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발]을 수강하며 정리한 글입니다. 🟦 기본 환경: IDE: IntelliJ, Language: Java @JoinTable : 외래키를 사용하는 연관 관계와는 달리 조인테이블을 별도의 테이블로 만들어 각 테이블의 각 테이블의 외래키를 가지고 연관관계를 관리 name: 조인 테이블 이름 joinColumns: 현재 entity에서 join에 참여할 column(FK, 현재 entity의 PK) inverseJoinColumns: join되어질 entity에서 join에 참여할 column(FK, join entity의 PK) @JoinTable 방식 예시 참고 자료 JPA 연관관계 매핑 - 조인 테이블(@JoinTable) 데이터.. 2023. 5. 23.
[SpringBoot_JPA_1] @Enumerated 이 글은 김영한의 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발]을 수강하며 정리한 글입니다. 🟦 기본 환경: IDE: IntelliJ, Language: Java @Enumerated 자바 Enum type 1. ORIGINAL: enum 순서값(1, 2, ...)을 DB에 저장 2. STRING: enum 이름을 DB에 저장 🚨 EnumType.ORIGINAL 사용 시, 다음과 같은 상황에서 문제가 발생할 수 있으므로 주의 필요 기존 변경 기존에는 COMP가 2였으나, 변경된 이후에는 ING가 2가 되어 2값이 COMP와 ING가 혼재되는 문제가 발생 9. [JPA] @Enumerated 자바 enum 타입을 엔티티 클래스의 속성으로 사용할 수 있다.@Enumerated 애노테이션에는.. 2023. 5. 23.
[SpringBoot_JPA_1] @Inheritance @DiscriminatorColumn 이 글은 김영한의 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발]을 수강하며 정리한 글입니다. 🟦 기본 환경: IDE: IntelliJ, Language: Java 📚 수정일: 2023년 05월 30일 @Inheritance Entity Class간 상속 관계를 나타내는 Annotation 1. InheritanceType.SINGLE_TABLE: 단일 테이블 전략 - 부모 클래스와 자식 클래스의 모든 속성을 단일 테이블에 저장 - DTYPE 컬럼을 사용하여 엔티티 타입을 식별 2. InheritanceType.JOINED: 구분 컬럼 전략 - 각 클래스마다 별도 테이블 생성, 부모 클래스의 속성은 부모 테이블에, 자식 클래스의 속성은 자식 테이블에 저장 - 조인을 사용하여 관련 테이블을.. 2023. 5. 22.
[SpringBoot_JPA_1] @OneToMany, @ManyToOne 이 글은 김영한의 [실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발]을 수강하며 정리한 글입니다. 🟦 기본 환경: IDE: IntelliJ, Language: Java @OneToMany Member : Order = 1 : 다, 한 명의 회원이 여러개의 상품 주문 양방향 연관 관계에서는 Member가 Order를, Order가 Member를 변경할 수 있는 문제가 발생 이를 해결하기 위해 Member or Order 둘 중 하나의 값이 변경될 경우에만, FK를 업데이트함(=연관관계의 주인) 연관 관계 주인: FK가 선언된 테이블 mappedBy: member에 의해 종속적으로 값을 전달받음 ▶ orders 값은 FK에 영향 X, member 값은 FK에 영향 O @ManyToOne Orde.. 2023. 5. 21.