π λ€μ΄κ°λ©°
@Embeddable κ³Ό @Embedded μ΄λ Έν μ΄μ μ Entityκ° λ¨μν λμλ μ μ¬μ©νμ§ μμ§λ§ Entity κ° λ³΅μ‘ν΄μ§ μλ‘ κ°λ μ±κ³Ό 곡ν΅μ μΈ μλ―Έλ₯Ό κ°κ³ μλ 컬λΌμ νλμ κ°μ²΄λ‘ μ¬μ©νκΈ° μν΄ μμ£Ό μ¬μ©νκ² λλ μ΄λ Έν μ΄μ μ λλ€. μ΄λ² ν¬μ€ν μμλ ν΄λΉ μ΄λ Έν μ΄μ μ μ¬μ©λ²μ λν΄ μ 리ν΄λ³΄λλ‘ νκ² μ΅λλ€.
π @Embeddable , @Embedded μ΄λ Έν μ΄μ μ¬μ©νκΈ°
Embeddable μ΄λ Έν μ΄μ μ μ¬μ©νλ κ°μ₯ νν μμμΈ User Entityλ₯Ό μ μνλ©΄μ
ν΄λΉ μ΄λ Έν μ΄μ μ μ¬μ©λ²μ μμλ³΄κ² μ΅λλ€.
μ°μ λ μ΄λ Έν μ΄μ μ
@Embeddable : κ° νμ μ μ μνλ κ³³μ νμ
@Embedded : κ° νμ μ μ¬μ©νλ κ³³μ νμ
λ€μμ μμΉμμ μ¬μ©νκ² λ©λλ€. κ·ΈλΌ μμλ‘ User Entityλ₯Ό λ§λ€μ΄λ³΄κ² μ΅λλ€.
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long uid;
β
private String name;
β
private String phoneNum;
β
private String zipCode; //μ°νΈλ²νΈ
private String wideAreaAddress; //κ΄μμ£Όμ
private String addressDetail; //μμΈμ£Όμ
}
User Entity μμ μ°νΈλ²νΈμ κ΄μμ£Όμ, μμΈμ£Όμ νλλ
κ²°κ΅ μ¬μ©μμ μ£Όμλ₯Ό νννλ νλμ λλ€.
νλμ κ°μκ° μμ κ°μ λμλ ν¬κ² λ¬Έμ λμ§ μκ² μ§λ§
νλμ κ°μκ° λ§μμ§μλ‘ κ΄λ¦¬νκΈ° μ΄λ €μμ§ κ²μ λλ€. μ΄λ Embeddable, Embedded μ΄λ Έν μ΄μ μ μ¬μ©ν μ μμ΅λλ€.
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long uid;
β
private String name;
β
private String phoneNum;
β
@Embedded
private Address address;
}
@Embeddable
public class Address {
private String zipCode;
private String wideAreaAddress;
private String addressDetail;
}
μ°νΈλ²νΈ, κ΄μμ£Όμ, μμΈμ£Όμλ₯Ό λ¬Άμ΄μ νλμ Address κ°μ²΄λ₯Ό λ§λ€μκ³
ν΄λΉ Address κ°μ²΄λ₯Ό μ¬μ©ν ν @Embedded μ΄λ Έν μ΄μ μ λ¬μμ£Όλ©΄
Address 컬λΌμ ν¬ν¨νμ¬ DBκ° μμ±λ©λλ€.
π @AttributeOverride
@Embeddedλ₯Ό μ΄μ©ν΄ κ°μ²΄λ‘ Entityμ Columnμ νννλ©΄, Column μ΄λ¦μ΄ μ€λ³΅λλ λ¬Έμ κ° λ°μνκΈ°λ ν©λλ€.
μλ₯Ό λ€μ΄ λμΌν Addressκ°μ²΄λ‘ μ¬λ¬ κ°μ νλλ₯Ό λ§λ€λ©΄ Entity μ μ₯μμλ μ€λ³΅λλ 컬λΌμ μ¬λ¬κ° μμ±ν΄μΌ νκΈ° λλ¬Έμ μ€λ₯κ° λ°μν©λλ€.
μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ AttributeOverride λΌλ μ΄λ Έν μ΄μ μ μ¬μ©ν΄μ
컬λΌμ μΈλΆμ μΌλ‘ μ§μ ν΄ μ€μΌ ν©λλ€.
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long uid;
β
private String name;
β
private String phoneNum;
β
@Embedded
private Address homeAddress; // μ§ μ£Όμ
β
@Embedded
private Address companyAddress; //μ§μ₯ μ£Όμ
}
@Embeddedλ₯Ό μ¬μ©νλ κ²½μ°μ κ°μ²΄μ μ΄λ¦μ΄ μλ ν΄λΉ κ°μ²΄μμ μμ±λ,
νλμ μ΄λ¦μ ColumnμΌλ‘ μ¬μ©νλ―λ‘ λμΌν Address κ°μ²΄λ₯Ό μ΄μ©νλ©΄ μ€λ³΅μ΄ λ°μν©λλ€.
@Embedded
@AttributeOverride(name = "zipCode", column = @Column(name = "home_zipCode"))
@AttributeOverride(name = "wideAreaAddress", column = @Column(name = "home_wideAreaAddress"))
@AttributeOverride(name = "addressDetail", column = @Column(name = "home_addressDetail"))
private Address homeAddress;
β
@Embedded
@AttributeOverride(name = "zipCode", column = @Column(name = "company_zipCode"))
@AttributeOverride(name = "wideAreaAddress", column = @Column(name = "company_wideAreaAddress"))
@AttributeOverride(name = "addressDetail", column = @Column(name = "company_addressDetail"))
private Address companyAddress;
μμ κ°μ΄ AttributeOverride μ΄λ Έν μ΄μ μ μ¬μ©νμ¬ μ€λ³΅μ νΌνκ³
κ°μ²΄μμ 컬λΌμ μ¬μ μνμ¬ Address κ°μ²΄λ₯Ό κ°λ 컬λΌμ λκ° μ΄μ μ¬μ©ν μ μμ΅λλ€.
μ°Έκ³ :
'BackEnd > JPA' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JPA] μλ°μμ 볡ν©ν€ μ¬μ©νκΈ° (0) | 2023.09.17 |
---|---|
@Transient μ΄λ Έν μ΄μ μ λν μ΄ν΄ (1) | 2023.04.20 |
[JPA] μμμ± μ°κ΄κ΄κ³ μ μ΄ CASCADE λ? (0) | 2022.11.13 |
JPAμ Dirty Checkingμ΄λ? (0) | 2022.11.05 |