JPA

개발/JPA

값 타임

2023. 02.07 17:00 복습 및 정리 시작 JPA는 데이터 타입을 크게 두 분류로 나눌 수 있다. 엔티티 타입 @Entity로 정의하는 객체다. 데이터가 변해도 식별자로 지속해서 추적이 가능하다. 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능하다. 값 타입 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체다. 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체된다. 값 타입은 또 크게 3가지로 나눌 수 있다. 기본 값 타입 : 자바 기본 타입, 래퍼 클래스, String 임베디드 타입 : 복합 값 타입 컬렉션 값 타입 이제 차근 차근 알아보겠다. 우선 아래 예제 코드를 살펴보자. @Entity public class Member{ @Id..

개발/JPA

영속성 전이, 고아 객체

2023. 02.07 16:30 복습 시작 이번 시간에는 영속성 전이와 고아 객체에 대해 학습해보겠다. 영속성 전이 : CASCADE 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶으면 영속성 전이 기능을 사용해야 한다. JPA는 CASCADE 옵션으로 영속성 전이를 제공한다. 쉽게 말해서 영속성 전이를 사용하면 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장할 수 있다. 예를 들어 일대다 단방향 부모와 자식 연관 관계가 있다고 생각해보자. 코드는 아래와 같다. (부모 : 자식, 1 : N) @Entity public class Parent{ @Id @GeneratedValue private Long id; @OneToMany(mappedBy = "parent") pri..

개발/JPA

프록시, 즉시 로딩과 지연 로딩

2023. 02.07 15:40 복습 시작 이번에는 프록시와 즉시 로딩, 지연 로딩에 대해 알아보겠다. 객체는 객체 그래프로 연관된 객체들을 탐색한다. 그런데 객체가 DB에 저장되어 있으므로 연관된 객체를 마음껏 탐색하기는 어렵다. JPA 구현체들은 이 문제를 해결하려고 프록시라는 기술을 사용한다. 프록시를 사용하면 연관된 객체를 처음부터 데이터베이스에서 조회하는 것이 아니라, 실제 사용하는 시점에 데이터베이스에서 조회할 수 있다. 하지만 자주 함께 사용하는 객체들은 조인을 사용해서 함께 조회하는 것이 효과적이다. JPA는 즉시 로딩과 지연 로딩이라는 방법으로 둘을 모두 지원한다. 한 가지 예시를 들어보자. 다대일 단방향 관계인 멤버와 팀이 있다. 즉 멤버는 팀을 참조하는 참조 변수가 있고, 팀은 멤버를..

개발/JPA

고급 매핑

2023. 02.07 15:00 복습 시작 고급 매핑 이번에는 상속 관계 매핑과 @MappedSuperclass에 대해 알아보겠다. 상속 관계 매핑 관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없다. 대신 슈퍼 타입 서브타입 관계라는 모델링 기법이 객체의 상속 개념과 가장 유사하다. ORM에서 이야기하는 상속 관계 매핑은, 객체의 상속 구조와 데이터베이스의 슈퍼 타입 서브타입 관계를 매핑하는 것이다. 슈퍼 타입 서브타입 논리 모델을 실제 물리 모델인 테이블로 구현할 때는 3가지 방법을 선택할 수 있다. 각각 테이블로 변환 -> 조인 전략 통합 테이블로 변환 -> 단인 테이블 전략 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략 이제 주요 어노테이션들을 살펴보고 각 전략들을 ..

Debin
'JPA' 태그의 글 목록 (3 Page)