📝 JPA
🖥️ 1. 임베디드 타입이란?
- JPA는
임베디드 타입 (embedded type)이라고 함.
- 주로 기본값 타입을 모아서 만들어서 복합값 타입이라고도 한다.
1-1. JPA에서 임베디드 타입 사용법
@Embeddable : 값 타입을 정의하는 곳에 표시
@Embedded : 값 타입을 사용하는 곳에 표시
1-2. 임베디드 타입의 장점
- period.isWork()처럼 해당 값 타입만 사용하는 의미있는 메서드를 만들 수 있다 (객체지향적 설계가 가능하다)
- 임베디드 타입을 포함한 모든 값 타입은 값 타입을 소유한 엔티티 생명주기를 의존한다.
1-3. 임베디드 타입과 테이블 매핑
- 임베디드 타입을 사용하기 전과 후에 매핑하는 테이블은 같다.
- 객체와 테이블을 아주 세밀하게 매핑하는 것이 가능
- 잘 설계한 ORM 애플리케이션은 매핑한 테이블의 수보다 클래스의 수가 더 많다.
1-4. @AttributeOverride : 속성 재정의
- 한 엔티티에서 같은 값 타입을 사용하려면 컬럼명이 중복
- @AttributeOverride를 사용해서 컬럼명 속성을 재정의
1-5. 객체 타입의 한계
- 항상 값을 복사해서 사용하면 공유 참조로 인해 발생하는 부작용을 피할 수있다.
- 문제는 임베디드 타입처럼 직접 정의한 값 타입은 자바의 기본 타입이 아니라 객체 타입이다.
- 자바 기본 타입에 값을 대입하면 값을 복사한다.
- 객체 타입은 참조값을 직접 대입하는 것을 막을 방법이 없다.