내 "테이블 당 콘크리트 클래스"주위에 접근 내 Java에서 나는 추상적 인 또는 비 추상적 인 어느 쪽의 방법이 될 수 있지만 데이터베이스의 테이블에 매핑되지 않습니다. 모든 클래스에 공통적 인 하나 이상의 변수가 있습니다. 예 :최대 절전 모드 상속 매핑 전략
public class GenericThing {
private Date createDate;
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date dt) {
createDate = dt;
}
}
문자 그대로 데이터베이스의 모든 테이블에 CREATE_DATE 열이 있기 때문에 유용합니다.
Hibernate에서 사용할 올바른 상속 전략은 "concrete per table"입니다. 그러나 이것은 각각의 테이블에 동일한 열이 필요하고 해당 열 이름 (CREATE_DATE)을 변경하면 모든 테이블의 열 이름을 변경해야하기 때문에 이것은 "나쁘다"고 말합니다. 글쎄, 분명히 이것은 사실이지만 대안은 무엇입니까? 분명히 데이터베이스의 모든 테이블에 Create Date를 저장하고 싶지만 전체 데이터베이스의 모든 개체가 하나의 테이블에 있어야하므로 모든 다른 매핑 전략을 올바르게 수행 할 수 없습니다. ?
하위 클래스 당 표는 상위 클래스가 데이터베이스에 있다고 가정하는 것 같습니다. 하지만 내 예제에서 볼 수 있듯이 부모 클래스는 실제 db 객체가 아닙니다. 이것은 모든 구체적인 클래스에 공통적 인 두 개의 필드를 포함하는 추상 클래스입니다. 특정 테이블에 맵핑되지 않습니다. – pete
데이터베이스의 구조를 변경하여 테이블의 부모 클래스를 유지할 수 있다고 가정합니다. 하지만 우리가 만든 모든 항목의 생성 날짜에 액세스하려고 할 때마다 내부 참여가 필요하지 않습니까? – pete
이제 나를 혼란스럽게합니다. 각 테이블에서 동일한 열을 반복하지 않으려면 동일한 테이블에서 전체 계층 구조를 보유하고 싶지 않고 공통 열을 별도로 유지하고 조인을 수행하지 않으려면 어떻게해야합니까? 정확히 무엇을 기대합니까? 어쨌든 https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/inheritance.html을 읽고 옵션을 선택하십시오. – kaqqao