티스토리 뷰

반응형

 

오늘은 @Embedded는

무엇이며 언제 어떻게 사용하는지에 대해 알아보자.

 

바로 시작해보자. 🔥

 


회원 엔티티가 다음과 같다고 가정해보자.

 

이해를 돕기 위한 회원 엔티티

 

회원 엔티티는 이름, 도시, 주소 번지, 주소 우편번호를 가진다.

 

이때 도시, 주소 번지, 주소 우편번호는

회원의 '주소'를 알기 위해 가지는 컬럼들이다.

 

이때 상세 데이터(도시, 주소 번지, 주소 우편번호) 또한

하나의 객체로 묶어

보다 객체지향적으로 설계할 수 있다.

 

도시, 주소 번지, 주소 우편번호를

주소라는 객체로 묶어 표현하면 보다 객체지향적인 코드가 될 것이다.

 

이때 사용하는 것이 @Embedded, @Embeddable이다.

 

@Embeddable
@Getter
public class Address {
    private String city;
    private String street;
    private String zipcode;
    }
}

 

주소 임베디드 타입을 생성하기 위해

@Embeddable 어노테이션을

주소 클래스에 생성해주고

 

@Entity
@Getter @Setter
public class Member {
    @Id
    @GeneratedValue
    @Column(name = "member_id")
    private Long id;

    private String name;

    @Embedded
    private Address address;

}

 

member 객체에서

임베디드 타입으로 된 주소 객체를

@Embedded 어노테이션을 이용해 사용한다.

 

 


 

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

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

 

그리고

임베디드 타입기본 생성자가 필수이다!

 

🤔 임베디드 타입이란?

하이버네이트에서 임베디드 타입을 컴포넌트(components)라고 한다.

 

 

🤔 Embedded 타입을 사용하는 이유?

✔ 코드의 재사용

✔ 높은 응집도

 

 

잘 설계한 ORM 애플리케이션은 매핑한 테이블의 수봐 클래스의 수가 더 많다 

- 인프런 김영한 T

 


오늘은 @Embedded @Embeddable이 무엇이며

어떻게 사용하는지 알아보았다.

 

그럼 오늘도 열심히 공부하자. 😊

반응형