Life Developer
인생 개발자
[JPA]공통된거 묶기-@Embedded, @Embeddable

사용전에 꼭 Equals와 hashcode 메서드를 만들어 동등성비교를 꼭 해야한다.

 

@Entity는 하지 않아 테이블로 생성하는게 아니다.

 

멤버에서 그룹짓고 싶은 놈들을 묶어 클래스에 다 짱박아두고 사용하는 전략.

 

사용법은 추가된 클래스에 @Embeddable을 입력,

그것을 쓸 Entity에 @Embedded를 입력해 멤버변수로 추가.

 

만약 똑같은 클래스를 사용하는 멤버변수를 선언하려면 아래처럼 @AttributeOverrides를 사용하여

컬럼명을 바꿔줘야함.

 

 

직접해보면

묶어서 클래스에 박아놓고,

 

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

public Address(String city, String street, String zipcode) {
this.city = city;
this.street = street;
this.zipcode = zipcode;
}

public Address() {
}

public String getCity() {
return city;
}

public void setCity(String city) {
this.city = city;
}

public String getStreet() {
return street;
}

public void setStreet(String street) {
this.street = street;
}

public String getZipcode() {
return zipcode;
}

public void setZipcode(String zipcode) {
this.zipcode = zipcode;
}
}

 

 

 

 

멤버에서 이렇게 추가해준다.

 

@Embedded
private Address homeAddress;

@Embedded
@AttributeOverrides({@AttributeOverride(name = "city", column = @Column(name = "city2"))@AttributeOverride(name = "zipcode", column = @Column(name = "zipcode2")),
@AttributeOverride(name = "street", column = @Column(name = "street2"))})
private Address workAddress;

  Comments,     Trackbacks