1
在我的Hibernate + Spring項目中,我有幾個非常相似的實體;這就是爲什麼我使用繼承類型:Table Per Class
。事情是由於我使用的XML映射與此類似繼承實體的最佳存儲庫/ DAO
class CommonEntity {
private Integer id;
private String name;
private String description;
// Constructors & Setters & Getters
}
class InheritedClass1 extends CommonEntity {
private boolean active;
// Constructors & Setters & Getters
}
class InheritedClass2 extends CommonEntity {
}
,爲第1類繼承的映射同時包含CommonEntity和InheritedClass1字段/列。
目前一切都很好。
這裏的問題是,什麼是最好的方式來實現存儲庫/ DAO的繼承實體?由於它們將包含通用字段(例如,它可能最終會實現一個findByName
DAO方法)。
我主要是爲了避免實現相同findByName
所有繼承類作爲唯一的區別將是Named Query
(即InheritedClass1_FindByName
和InheritedClass2FindByName
)的名稱。
是的,我正在考慮這種可能性,但我不是很確信...我面臨的問題可能非常普遍,所以我想這有一個更好的解決方案... 我也不得不說我的項目的主要目的是學習。這是學習Spring&Hibernate的個人「大」項目。那意味着什麼?我學得越多越好:) – kazbeel
如果您正在尋找一種獲取大量通用dao功能的方法,而無需編寫大量代碼,那麼您應該查看[spring-data](http://spring.io/guides/gs/access-data-jpa /)項目,該項目允許您爲自動爲您執行的daos創建界面。有很多方法可以用來處理通用dao方法,所以很大程度上取決於數據模型以及訪問數據所需的方式,以確定哪種方式最好。 – jcmwright80
這是一個非常有趣的項目(春季數據)。我沒聽說過!謝謝! 它看起來是基於JPA(它主要暗示Annotations的用法,但我使用Hibernate的XML映射,這會是一個問題嗎? – kazbeel