JPA/Base

JPA/Base

JPA - 값 타입

✍JPA의 데이터 타입 분류 엔티티 타입 - @Entity - 데이터가 변해도 식별자로 지속해서 추적 가능. 값 타입 - 단순한 값으로 사용하는 자바 기본타입이나 객체 - 식별자가 없고 값만 있으므로 변경시 추적 불가. - 기본값 타입 (primitive type (int, float..), wrapper class (Integer, Long ..) , String / 임베디드 타입 (복합 값 타입) / 컬렉션 값 타입 - 불변 객체로 만들어야 함. 💡 기본 값 타입 - String, int 등.. - 생명 주기를 엔티티에 의존 - 자바의 primitive 타입은 절대 공유되지 않음. - 기본 타입은 항상 값을 복사. (Side Effect 발생 X) - Integer와 같은 wrapper class, ..

JPA/Base

JPA - 프록시 & 지연로딩, 즉시로딩

✍프록시 기초 em.find(): 데이터베이스를 통해 실제 Entity 객체 조회. em.getReference() : 데이터베이스 조회를 미루는 가짜(프록시) Entity 객체 조회. => getReference()를 통해 가져온 객체는 ORM이 만들어낸 프록시엔티티 객체이다. 실제 데이터가 필요한 시점이 오면 DB에 쿼리를 날린다. 💡 프록시 특징 - 실제 클래스를 상속 받아서 만들어진다. - 실제 클래스와 겉 모양이 같다. (내부 데이터는 비어있다.) - 사용하는 입장에서는 이론상 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 된다. - 프록시 객체는 실제 객체의 참조(target)를 보관한다. 출처 - https://www.inflearn.com/course/ORM-JPA-Basic/das..

JPA/Base

JPA - 상속 관계 매핑

✍상속관계 매핑 관계형 DB는 상속 관계가 없음. 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사. -> 객체의 상속과 DB의 슈퍼타입 서브타입 관계를 매핑 조인 전략 - 상위 테이블과 그를 상속받는 구조의 하위 테이블을 만들고 하위 테이블의 PK, FK를 같도록 설계하여 JOIN으로 두 테이블을 가져오는 전략. 단일 테이블 전략 - 논리 모델을 한 테이블로 합치는 전략. (성능적으로 고려하기도 함 단순해서.) 구현 클래스마다 테이블 전략 - 공통되는 특성을 각 테이블에 추가하여 상위 테이블 개념을 없애는 전략. (중복되는 컬럼 존재.) => JPA는 세가지 전략을 모두 지원. 세 전략은 DB에서 테이블이 어떻게 구성되는지에 따른 차이가 있음. 클래스 설계를 바꿀 필요 없이 전략만 바꿔주면 해..

JPA/Base

JPA - 연관관계 매핑 #2

✍연관관계 매핑시 고려사항 - 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 - 객체 양방향 관계는 A->B, B->A 처럼 참조가 2군데인 구조. 사실, 단방향 2개라고 볼 수 있다. ㆍ다중성 ㆍ단방향, 양방향 ㆍ연관관계의 주인 ❓❗ 다대일 [N:1] @ManyToONe ❓❗ 일대다 [1:N] (운영 측면에서 권장하지 않음) @OneToMany - 기본적으로 DB 설계상 일대다 관계에서 일인 쪽에 FK가 있을 수 없다. 연관관계의 주인도 마찬가지. (일 쪽에서 FK를 가지고 있으면 테이블 하나에서 다른 FK 때문에 중복 테이블이 생성되기 때문.) => 따라서, 테이블의 일대다 관계는 항상 다(N) 쪽에 외래 키가 있다. - JPA 표준 스펙에서는 '일대다 '관계 매핑을 지원. - 연관관계의 주인..

JPA/Base

JPA - 연관관계 매핑

객체와 관계형 DB가 지향하는 패러다임의 차이를 극복하는 방법. ✍연관관계 매핑 - 🌹 객체의 참조와 테이블의 외래 키를 매핑 - 🔮 객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다. - 테이블에 맞추어 모델링을 하면, 코드를 객체 지향스럽게 짤 수 없음. => 외래 키에 대한 참조가 있어야하는데, 테이블에 맞추어 설계하면 객체가 외래 키 식별자 값을 그대로 갖게 됨. => 따라서 다른 테이블에 접근할 때 외래 키 식별자로 계속 DB에 접근해야 한다. 테이블은 외래 키로 조인을 사용하여 연관된 테이블을 찾음 객체는 참조를 사용해서 연관된 객체를 찾음. ㆍ단방향 연관관계 @ManyToOne - 해당 Entity에서 다른 entity에 접근하기 위한 참조의 개념으로, N : 1 의 관계..

JPA/Base

JPA - Entity Mapping

JPA의 핵심 - 영속성 컨텍스트나 내부 매커니즘 / 객체와 관계형 데이터베이스를 어떻게 매핑하는지 ✍엔티티 매핑 ㆍ객체와 테이블 매핑 객체 & 테이블 매핑 - @Entity @Table 필드와 컬럼 매핑 - @Column 기본 키 매핑 - @Id 연관관계 매핑 - @ManyToOne @JoinColumn @Entity - @Entity가 붙은 클래스는 JPA가 전담하여 관리. - 기본 생성자 필수 - final 클래스, enum, interface, inner 클래스 X - 저장할 필드에 final 사용 X @Table - name = 매핑할 테이블 이름 - uniqueConstraints = unique 제약조건을 걺 ㆍ데이터베이스 스키마 자동 생성 애플리케이션 로딩 시점에 자동으로 테이블을 생성 할..

KAispread
'JPA/Base' 카테고리의 글 목록 (2 Page)