JPA Entity
JPA Entity๋ฅผ ๊ตฌํํ๋ ค๋ฉด ๋ค์ ๊ท์น์ ์ง์ผ์ ธ์ผํ๋ค.
๋ชจ๋ Entity ํด๋์ค๋ @Id ์ค์ ์ด ํ์ํ๋ค.
์ด๋ @Id๋ก ์ค์ ๋ ๊ฐ์๋ null๊ฐ์ด ์ฌ ์ ์๋ค.
๊ธฐ๋ณธํค๊ฐ ๋ณตํฉํค์ธ ๊ฒฝ์ฐ์๋ @EmbeddedId ํน์ @IdClass๋ฅผ ์ฌ์ฉํ๋ค.
ํ ์ด๋ธ์ Primary Key๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ์์ ์ ์๋ค. ์ด ๊ฒฝ์ฐ์๋ Uniqueํ ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก @Id annotation์ ๋ถ์ด๋ฉด๋๋ค.
๋จ์ผํค
@Entity
@Table(name="member")
public class Member implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String mbrId;
private String name;
//Getter, Setter
}
@Entity : JPA Entity์์ ์๋ฆฐ๋ค.
@Table : 'member' ํ ์ด๋ธ๊ณผ ๋งคํ๋จ์ ๋ช ์ํ๋ค.
@Id : Primary Key์์ ๋ช ์ํ๋ค.
๋ณตํฉํค(EmbeddedId, @IdClass)
๋ ์ด๋ ธํ ์ด์ ์ ๋ฌผ๋ฆฌ์ ๋ชจ๋ธ ๊ด์ ์์ ์ฐจ์ด์ ์ ์๋ค.
@EmbeddedId๋ ๊ฒฐํฉ ๋ PK๊ฐ ์๋ฏธ์๋ ์ํฐํฐ ์์ฒด์ด๊ฑฐ๋ ์ฝ๋์์ ์ฌ์ฌ์ฉ ๋ ๋ ์๋ฏธ๊ฐ ์๋ค.
๊ฐ์ฒด ์งํฅ์ ๋ ๊ฐ๊น์ด ๋ฐฉ๋ฒ
@IdClass๋ ํ๋์ ์ผ๋ถ ์กฐํฉ์ด ๊ณ ์ ํ์ง๋ง ํน๋ณํ ์๋ฏธ๊ฐ ์์ ๊ฒฝ์ฐ์ ์ ์ฉํ๋ค.
DB์ ๋ ๊ฐ๊น์ด ๋ฐฉ๋ฒ
@IdClass
@IdClass์๋ ์๋ณ์ ํด๋์ค๋ฅผ ์์ฑํด์ผํ๋ค. ์์์์๋ PaymentMasterPk ํด๋์ค๋ฅผ ์์ฑํด์ฃผ์๋ค. ์ฌ๊ธฐ์ ์๋ณ์ ํด๋์ค์๋ ๋ช๊ฐ์ง ๊ท์น์ด ์๋ค.
Serializable ์ธํฐํ์ด์ค ๊ตฌํ
์๋ณ์ ํด๋์ค์ ํ๋๋ช ๊ณผ Entity์์ ์ฌ์ฉํ๋ ์๋ณ์์ ํ๋๋ช ์ด ๋์ผํด์ผํ๋ค.
equals()
์hashCode()
๋ฅผ ๊ตฌํํด์ผํ๋ค.๊ธฐ๋ณธ ์์ฑ์(args๊ฐ ์๋)๋ฅผ ๊ตฌํํด์ผํ๋ค.
ํด๋์ค์ ์ ๊ทผ ์ ํ์๋ public์ด์ด์ผํ๋ค.
@Entity
@IdClass(PaymentMasterPK.class)
@Table(name="payment_mst")
public class PaymentMaster implements Serializable{
private static final long serialVersionUID = 1L;
@Id
private String pmtCode;
@Id
private String pmtType;
private String pmtName;
private String partCnclYn;
// Getter, Setter
}
public class PaymentMasterPK implements Serializable{
private static final long serialVersionUID = 1L;
private String pmtCode;
private String pmtType;
public PaymentMasterPK(){
}
public PaymentMasterPK(String pmtCode, String pmtType){
if(StringUtils.isEmpty(pmtType)) {
pmtType = new String("");
}
this.pmtCode = pmtCode;
this.pmtType = pmtType;
}
// Getter, Setter
@Override
public boolean equals(Object obj) {
if(this == obj) {
return true;
}
if(obj == null || this.getClass() != obj.getClass()) {
return false;
}
PaymentMasterPK paymentMasterPK = (PaymentMasterPK)obj;
if(this.pmtCode.equals(paymentMasterPK.pmtCode) && this.pmtType.equals(paymentMasterPK.pmtType) ) {
return true;
}
return false;
}
@Override
public int hashCode() {
return Objects.hash(pmtCode, pmtType);
}
}
@EmbeddedId
์๋ณ์ ํด๋์ค์ @Embeddable์ ์ฌ์ฉํด์ผํ๋ค.
Serializable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ผํ๋ค.
equals()
,hashCode()
๋ฅผ ๊ตฌํํด์ผํ๋ค.๊ธฐ๋ณธ์์ฑ์๋ฅผ ์ ์ธํด์ผํ๋ค.
ํด๋์ค์ ์ ๊ทผ ์ ํ์๋ public์ด์ด์ผํ๋ค.
@Entity
@Table(name="payment_mst")
public class PaymentMaster implements Serializable{
private static final long serialVersionUID = 1L;
@EmbeddedId
private PaymentMasterPk paymentMasterPK;
private String pmtName;
private String partCnclYn;
// Getter, Setter
}
@Embeddable
public class PaymentMasterPK implements Serializable{
private static final long serialVersionUID = 1L;
private String pmtCode;
private String pmtType;
public PaymentMasterPK(){
}
public PaymentMasterPK(String pmtCode, String pmtType){
this.pmtCode = pmtCode;
this.pmtType = pmtType;
}
// Getter, Setter
@Override
public boolean equals(Object obj) {
if(this == obj) {
return true;
}
if(obj == null || this.getClass() != obj.getClass()) {
return false;
}
PaymentMasterPK paymentMasterPK = (PaymentMasterPK)obj;
if(this.pmtCode.equals(paymentMasterPK.pmtCode) && this.pmtType.equals(paymentMasterPK.pmtType) ) {
return true;
}
return false;
}
@Override
public int hashCode() {
return Objects.hash(pmtCode, pmtType);
}
}
์ฐธ์กฐ
Last updated
Was this helpful?