실전 예제 5 - 연관관계 관계
·
BackEnd/자바 ORM 표준 JPA 프로그래밍
이번 실전 예제 5의 요구 사항이다. 모든 연관관계를 지연 로딩으로 @ManyToOne, @OneToOne은 기본이 즉시 로딩이므로 지연 로딩으로 변경 Order -> Delivery를 영속성 전이 ALL 설정 Order -> OrderItem을 영속성 전이 ALL 설정 지연 로딩 변경하기 지금 까지 만든 class를 돌아다니면서 ManyToOne과 OneToOne은 LAZY로 변경한다. //Category @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "PARENT_ID") private Category parent; //Delivery @OneToOne(mappedBy = "delivery", fetch = FetchType.LAZY) private ..
JPA -프록시와 연관관계 관리
·
BackEnd/자바 ORM 표준 JPA 프로그래밍
프록시 Member 테이블에 username과 Team team이 존재한다고 할 때, 회원만 출력하고 싶은 경우에도 select는 team도 조회하게 된다. 이것은 큰 낭비인데 JPA는 이것을 프록시로 처리한다. 프록시 기초 em.find() : 데이터베이스를 통해서 실제 엔티티 객체를 조회한다. em.getReference() : 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체를 조회한다. 즉, em.getReference()는 select 구문을 안하고도 값을 저장하고 있다. 프록시 특징 실제 클래스를 상속 받아서 만들어진다. 실제 클래스와 겉 모양이 같다. 사용하는 입장에서는 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 된다.(이론상) 프록시 객체는 실제 객체의 참조를 보관한다. 프록..
실전 예제 4 - 상속관계 매핑
·
BackEnd/자바 ORM 표준 JPA 프로그래밍
실전 예제 3에서 추가 된 것 상품의 종류는 음반, 도서, 영화가 있고 이후 더 확장될 수 있다. 모든 데이터는 등록일과 수정일이 필수다. 상품 종류 확장 package jpabook.jpashop.domain; import javax.persistence.Entity; @Entity public class Album extends Item { private String artist; private String etc; ..Getter/Setter } package jpabook.jpashop.domain; import javax.persistence.Entity; @Entity public class Book extends Item{ private String author; private String ..
투 포인터(JAVA)
·
BackEnd/알고리즘 공부
수들의 합5(백준 2018번) https://www.acmicpc.net/problem/2018 2018번: 수들의 합 5 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한 www.acmicpc.net 문제 설명 이 문제는 입력값 N을 몇 개의 연속된 자연수의 합으로 나타낼 수 있는지 구하는 것이다. 예를 들어 15를 입력 받으면 7+8, 4+5+6, 1+2+3+4+5, 15 이렇게 4가지 이다. 문제에 대한 아이디어 투 포인터를 이용해서 풀어 나가는 대표적인 문제이다. start_idx 와 end_idx가 둘 다 처음 1에서 부터 시작한다. ..
JPA 고급 매핑
·
BackEnd/자바 ORM 표준 JPA 프로그래밍
상속관계 매핑 관계형 데이터베이스는 상속 관계가 아니다. 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다. 상속관계 매핑은 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑한다. 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법은 3가지가 존재한다. 각각 테이블로 변환 -> 조인 전략 통합 테이블로 변환 -> 단일 테이블 전략 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략 조인 전략 package hellojpa; import javax.persistence.*; @Entity @Inheritance(strategy = InheritanceType.JOINED) //Item을 상속을 join으로 설정 @DiscriminatorColumn //Dtype을 추가..
실전 예제 3 - 다양한 연관관계 매핑
·
BackEnd/자바 ORM 표준 JPA 프로그래밍
실전 예제 2에서 했던 내용에 배송과 카테고리를 추가하고 다양한 연관관계 매핑을 추가한다. 다대다는 사용하지 않지만 예제이므로 사용한다고 한다. Delivery package jpabook.jpashop.domain; import javax.persistence.*; @Entity public class Delivery { @Id @GeneratedValue private int Id; @OneToOne(mappedBy = "delivery") private Order order; private String city; private String zipCode; @Enumerated(EnumType.STRING) private DeliveryStatus status; } ///// Order에 추가 @On..