도메인 모델에서 단순한 데이터를 표현하는데 사용되는 클래스를 Value 클래스라 한다.Value 클래스는 다른 클래스에 삽입되어 사용될 수 있다.@Embeddable 애너테이션과 @Embedded애너테이션을 이용하여 엔티티 클래스에 밸류 타입 클래스를 포함하여 구현 된다.
JPA에서 value 클래스는 엔티티 객체 내에서 값의 집합을 나타내는 클래스이다.Value 클래스는 별도의 테이블로 매핑되지 않고, 엔티티 객체의 속성으로 포함되어 사용된다.자신만의 라이프 사이클이 없으며 밸류는 자신이 속한 객체가 생성될 때 함께 생성되고 삭제될 때 함께 삭제된다.
코드 재사용과 모듈화
여러 엔티티에서 공통으로 사용되는 값들을 Value 클래스로 정의하면 코드 중복을 줄이고 재사용성을 높일 수 있다. 예를 들어, 주소나 연락처와 같은 정보가 여러 엔티티에 필요한 경우, 해당 정보를 Value 클래스로 만들어 각 엔티티에서 참조할 수 있다.
도메인 모델링
Value 클래스를 사용하여 도메인 개념을 표현할 수 있다.도메인 모델링에서 의미 있는 값을 하나의 개념으로 묶어서 표현하면 코드의 가독성과 이해도가 높아진다.
@Embeddable
Value 클래스는 @Embeddable 어노테이션을 사용하여 매핑된다.@Embeddable 해당 클래스가 값 타입임을 나타내며, JPA 구현체에게 해당 값을 포함한 엔터니 객체를 저장하거나 조회할 때 어떻게 처리해야 하는지 알려준다.Value 클래스 내부에 필드들은 @Column 등의 매핑 어노테이션을 사용하여 각각의 데이터베이스 컬럼과 매핑될 수 있다.