"A", "B"및 "C"의 세 개의 열이있는 테이블이 있습니다. 이 두 열 (A와 B) 중 두 개는 테이블의 복합 기본 키입니다. 나는이 테이블을위한 Java 클래스를 작성했으며 Hibernate를 사용하여 클래스의 데이터를 테이블의 데이터에 맵핑했다. 임베디드 (즉, 복합) 키에 대해 다른 클래스를 만들었습니다.최대 절전 모드 : EmbeddedIds와 중복되는 getters/setters가 있습니까?
두 개의 클래스는 다음과 같다 :
@Entity
@Table(name="SOME_TABLE", schema="SOME_SCHEMA")
public class Outer {
private Key key;
private String a;
private String b;
private String c;
@EmbeddedId
public Key getId() {
return this.key;
}
// Also a setter for Key...
@Column(name="A")
public String getA() {
return this.a;
}
public void setA(final String a) {
this.a = a;
}
// Also setters and getters for B and C.
}
.
@Embeddable
public class Key {
private String a;
private String b;
@Column(name="A")
public String getA() {
return this.a;
}
public void setA(final String a) {
this.a = a;
}
// Also a getter & setter for B.
}
모든 Hibernate 문서는 getter와 setter가 어디로 가야하는지 정확히 설명합니다. Outer와 Key 모두 합성 키를 구성하는 값에 대한 설정자를 가지고 있어야합니까? 두 곳 모두에 setter가 있으면 A에 대한 값을 Outer에 설정하면 Hibernate가 올바른 작업을 수행합니까? 즉 Key에 값을 설정합니까? Outer.getA/B() 및 Outer.setA/B()가 Key 클래스를 연기해야합니까?
동일한 데이터에 대해 두 곳에서 세터를 사용하는 것은 잘못된 코딩 방법이라고 생각합니다. 적어도 모호합니다. 나는 Hibernate가 나를 위해 Key 클래스의 값을 설정할 것이기를 희망하지만 확실히 알고 싶습니다. 감사!
- 조
감사합니다 , tscho. 나는 거의 @ Embedding을 사용하지 않기 때문에 거기에 연결하지 않았다. 내 원래의 질문에 답하기 위해 "핵심에 위임하십시오"라는 접근 방식이 있습니다. – joemadeus