該主題可能會引起誤解。基本上,我有3個「實體」與他們之間的關係。只有一個實體需要持久化(在服務器重新啓動之間)。我仍然希望非持久性實體的數據庫功能......例如查詢。JPA-混合實體類和非實體類
什麼是正確的模式來處理這個?
我想到了一個內存數據庫,但由於我的實體之一確實需要持久的,我不認爲這是一種選擇,因爲非持久性的實體將是一個不同的持久化單元。
另一個想法只是讓一切執着,但擦拭非持久表系統重新啓動時。
?謝謝。
該主題可能會引起誤解。基本上,我有3個「實體」與他們之間的關係。只有一個實體需要持久化(在服務器重新啓動之間)。我仍然希望非持久性實體的數據庫功能......例如查詢。JPA-混合實體類和非實體類
什麼是正確的模式來處理這個?
我想到了一個內存數據庫,但由於我的實體之一確實需要持久的,我不認爲這是一種選擇,因爲非持久性的實體將是一個不同的持久化單元。
另一個想法只是讓一切執着,但擦拭非持久表系統重新啓動時。
?謝謝。
你可以有兩個持久性單元。一個是磁盤數據庫,另一個是內存數據庫。
的關係將需要短暫的,或可能存儲的外鍵A和B.或者根本沒有這兩者之間的關係,需要時只需執行一個查詢找到A或B,作爲關係在一個持久的實體中,沒有被持久化似乎很古怪。
這本質上不是一個JPA問題。它將適用於您正在使用的任何持久性機制。
如果我正確地讀你的問題,兩個非持續性的實體可能僅僅是POJO和在JPA的應用程序,他們不會住在任何持久性單元。
你沒有描述的關係,所以這是一個有點猜測。如果持續實體由另外兩個實體組成,則可能有類似的情況:
@Entity
@Table(name = "TABLE_NAME")
public class PersistingEntity implements Serializable {
@Id
@Column(name = "ID")
private Long id;
...
@Transient
A a = new A();
@Transient
B b = new B();
...
}
其中A和B是非持久實體。
'了'和'B'應標記爲'@ Transient'否則他們會得到序列化和持久化的字節數組。 – CarlosZ 2011-03-09 19:38:42
@CarlosZ謝謝! – 2011-03-09 19:44:44
謝謝。我明白,將它們標記爲暫時的會使它們脫離持久性,但問題是我希望a和b字段參與關係,並且我希望能夠對它們執行查詢。 – 2011-03-09 20:05:24
我認爲在內存數據庫中使用不同的PU + an而不是(直接)定義不同PU中的對象之間的關係聽起來很合理。 – 2011-03-11 16:33:03