[英]Java/Hibernate using interfaces over the entities
我正在使用帶注釋的Hibernate,我想知道以下是否可行。
我必須設置一系列表示可以持久保存的對象的接口,以及一個主數據庫類的接口,該接口包含用於持久存儲這些對象的幾個操作(...數據庫的API)。
在此之下,我必須實現這些接口,並使用Hibernate持久化它們。
所以我會,例如:
public interface Data {
public String getSomeString();
public void setSomeString(String someString);
}
@Entity
public class HbnData implements Data, Serializable {
@Column(name = "some_string")
private String someString;
public String getSomeString() {
return this.someString;
}
public void setSomeString(String someString) {
this.someString = someString;
}
}
現在,這種方法很好,有點像。 當我想要嵌套實體時,麻煩來了。 我想要的界面很簡單:
public interface HasData {
public Data getSomeData();
public void setSomeData(Data someData);
}
但是當我實現該類時,我可以按照下面的界面進行操作,並從Hibernate獲取錯誤,說它不知道類“Data”。
@Entity
public class HbnHasData implements HasData, Serializable {
@OneToOne(cascade = CascadeType.ALL)
private Data someData;
public Data getSomeData() {
return this.someData;
}
public void setSomeData(Data someData) {
this.someData = someData;
}
}
簡單的改變是將類型從“數據”更改為“HbnData”,但這顯然會破壞接口實現,從而使抽象變得不可能。
任何人都可以向我解釋如何以一種可以與Hibernate一起使用的方式實現它?
也許OneToOne.targetEntity?:
@OneToOne(targetEntity = HbnData.class, cascade = CascadeType.ALL)
private Data someData;
我通常使用的接口是數據訪問對象或DAO。 使用Java泛型,我只能寫一次; Hibernate也可以只編寫一次實現:
package persistence;
import java.io.Serializable;
import java.util.List;
public interface GenericDao<T, K extends Serializable>
{
T find(K id);
List<T> find();
List<T> find(T example);
List<T> find(String queryName, String [] paramNames, Object [] bindValues);
K save(T instance);
void update(T instance);
void delete(T instance);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.