본문 바로가기

Java

JPA 임베디드 타입 ( @Embeddable, @Embedded )

임베디드 타입이란?

 

임베디드 타입이란 JPA 에서 엔티티에 사용하는 기본 값 타입을 모아 만든 복합적인 값 타입 입니다.

 

임베디드 타입을 통해 새로운 값 타입을 직접 정의 할 수 있습니다.

 


사용방법

@Embeddable: 값 타입을 정의하는 곳

@Embedded: 값 타입을 사용하는 곳

기본생성자 필수 (전 기본생성자를 등록하지 않았는데 정상적으로 작동되었습니다.) 

 

임베디드 타입으로 만들 클래스를 만들고 @Embeddable 어노테이션을 적어줍니다.

@Embeddable
public class Address {

    private String city;
    private String street;
    private String zipcode;

}

 

 

엔티티에 임베디드 타입을 필드에 추가하고 @Embedded 어노테이션을 붙힙니다.

@Entity
public class Member {

    @Id @GeneratedValue
    private Long id;
    private String name;

    @Embedded
    private Address address;

	...
    
    getter(), setter()


}

 

 

H2 데이터베이스로 확인 결과 정상적으로 반영되었습니다.

 


임베디드 타입의 장점

 

임베디드 타입을 사용하면 재사용성이 높아집니다.

예를 들어 등록일과 수정일에 대한 컬럼을 모든 엔티티에 넣어야할때 등록일과 수정일에 대한 임베디드 타입을 정의하여 모든곳에 넣어주기면 하면 됩니다.

그리고 등록일과 수정일에 대한 유저아이디를 넣어야할 때 임베디드 타입에 넣어주기만하면 손쉽게 모든 코드를 수정할 수 있습니다.

 

의미있는 메소드를 만들 수 있습니다.

Address.fulladdress() 처럼 해당 값타입에서만 사용할 수 있는 메서드를 만들 수 있습니다.

 


참조

자바 ORM 표준 JPA 프로그래밍 - 김영한

'Java' 카테고리의 다른 글

JPA 데이터베이스 스키마 자동 생성  (0) 2024.01.31
JPA 객체와 테이블 매핑  (0) 2024.01.31
JPA Unknown entity 해결방법  (0) 2024.01.29
JPA 구현체 하이버네이트 사용방법  (0) 2024.01.27
JPA 란?  (1) 2024.01.21