본문 바로가기
프로그램/스프링

모델5 @Embeddable

by cbwstar 2021. 6. 22.
728x90
반응형

@Embeddable 애노테이션을 지정한 클래스를 밸류 클래스라고 합니다. 밸류 클래스란 int, double 처럼 하나의 값을 나타내는 클래스를 말합니다. 보통 주소(address)라는 값을 저장하기 위해서는 아래와 같이 String 변수에 저장하여 관리할 것입니다. 

java
닫기
package com.example.model.entity; import lombok.Getter; import lombok.Setter; import lombok.ToString; import javax.persistence.Embeddable; import java.util.Objects; @Embeddable @Setter @Getter @ToString public class Address { ​​​​private String city; ​​​​private String street; ​​​​private String zipcode; ​​​​public Address() { ​​​​} ​​​​public Address(String city, String street, String zipcode){ ​​​​​​​​this.city = city; ​​​​​​​​this.street = street; ​​​​​​​​this.zipcode = zipcode; ​​​​} ​​​​@Override ​​​​public boolean equals(Object o) { ​​​​​​​​if (this == o) return true; ​​​​​​​​if (o == null || getClass() != o.getClass()) return false; ​​​​​​​​Address address = (Address) o; ​​​​​​​​return Objects.equals(city, address.city) && ​​​​​​​​​​​​​​​​Objects.equals(street, address.street) && ​​​​​​​​​​​​​​​​Objects.equals(zipcode, address.zipcode); ​​​​} ​​​​@Override ​​​​public int hashCode() { ​​​​​​​​return Objects.hash(city, street, zipcode); ​​​​} }

 

java
닫기
package com.example.model.entity; import lombok.Getter; import lombok.Setter; import lombok.ToString; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Getter @Setter @ToString(exclude = {"orders"}) @Entity public class Member extends BaseEntity { ​​​​@Id ​​​​@GeneratedValue ​​​​@Column(name="MEMBER_ID") ​​​​private Long id; ​​​​private String name; ​​​​@Embedded ​​​​private Address address; ​​​​@OneToMany(mappedBy = "member") ​​​​private List<Order> orders = new ArrayList<Order>(); }
728x90
반응형


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."