Back-end/JPA
-
[JPA] 값 타입Back-end/JPA 2022. 4. 28. 10:15
📌 JPA의 데이터 타입 분류 (2가지) 1) 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적이 가능하다. 공유가 가능하다. ex) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 2) 값 타입 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적이 불가하다. 공유되면 안되는 값이다. (복사해서 사용, 불변 객체로 생성) 생명 주기를 엔티티에 의존한다. ex) 숫자 100을 200으로 변경하며 완전히 다른 값으로 대체 📌 값 타입 분류 (3가지) 기본값 타입, 임베디드 타입, 컬렉션 값 타입 총 3가지로 분류된다. 📌 기본값 타입 종류: 자바 기본 타입(int, double), 래퍼 ..
-
[JPA] 프록시와 연관관계 관리Back-end/JPA 2022. 4. 28. 00:12
📌 프록시 프록시 개념은 Hibernate에 구현되어 있는 것이다. JPA 인터페이스의 구현체로 Hibernate를 사용하기 때문에 프록시를 사용할 수 있는 것이다. EntityManager의 find() : 데이터베이스를 통해 실제 엔티티 객체를 조회 EntityManager의 getReference() : 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 ▶️ 프록시가 필요한 예시 상황 위와 같은 구조로 설계가 되어있을 때 'Member를 조회할 때 Team도 함께 조회해야 할까?' 라는 의문에서 프록시는 사용되게 되었다. Member의 필드만 조회해야 하는 경우에는 Team을 조인해서 가져오지 않아도 되기 때문이다. ▶️ 프록시의 특징1 실제 클래스를 상속 받아서 만들어진다. 실제 클래스와..
-
[JPA] 상속관계 매핑과 @MappedSuperclassBack-end/JPA 2022. 4. 27. 00:00
📌 상속관계 매핑 상속관계 매핑이 필요한 이유 관계형 데이터베이스는 상속 관계가 없다. 데이터베이스의 슈퍼타입 서브타입 관계 모델링 기법이 객체의 상속과 유사하다. 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것이 필요하다. 데이터베이스의 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 슈퍼타입과 서브타입을 각각의 테이블로 변환 → 조인 전략 통합 테이블(서브타입에 있는 모든 컬럼을 슈퍼타입에 하나로 통합)로 변환 → 단일 테이블 전략 서브타입 테이블로 변환(서브타입 컬럼에 슈퍼타입에 있는 모든 속성을 포함하도록 구성) → 구현 클래스마다 테이블 생성 전략 📌 객체 관점 주요 어노테이션 @Inheritance(strategy = InheritanceType.XXX) ..
-
[JPA] 연관관계 매핑Back-end/JPA 2022. 4. 14. 09:59
# 연관관계가 필요한 이유 객체를 테이블에 맞춰 데이터 중심으로 모델링하면, 협력 관계를 만들 수 없다. - 테이블은 외래 키(FK)로 조인을 사용해 연관된 테이블을 찾는다. - 객체는 참조를 사용해 연관된 객체를 찾는다. # 연관관계 매핑시 고려사항 3가지 단방향 vs. 양방향 양방향 관계일 때의 연관관계의 주인 다중성 @ManyToOne, @OneToMany, @OneToOne, @ManyToMany 1. 단방향 vs. 양방향 테이블 외래 키 하나로 양쪽 조인 가능 사실 방향이라는 개념이 없음 객체 참조용 필드가 있는 쪽으로만 참조 가능 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 # 단방향 연관관계 객체 지향 모델링 - ORM 매핑 객체 지향 모델링 - 객체의 참조와 테이블의 외래 키를 매핑..