사용전에 꼭 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;
'Developer' 카테고리의 다른 글
[JPA]테이블에 컬렉션을 저장한다-@ElementCollection,@CollectionTable (1) | 2020.09.20 |
---|---|
[JPA]@Embeddable 문제점 (0) | 2020.09.20 |
[JPA]불쌍한 고아객체.. (0) | 2020.09.20 |
[JPA]CASCADE - persist 1번에 자식까지 (0) | 2020.09.20 |
[JPA]지연로딩 - LAZY(관련 클래스는 프록시 객체로 가져옴) (0) | 2020.09.19 |