2015-09-02 79 views
4

我正在從here讀出ORM的基本知識,它定義了什麼是持久性?什麼是hibernate中的持久性?

這裏被定義爲

我們想的(一些)我們的對象住超出JVM範圍的狀態,使得同處於可用狀態後。

我不能低估這是什麼由意味着超越了JVM的範圍。 我所理解的形式,這可能是

  • 對象不是由JVM但會議
  • 處理,我們就可以節約使用2級高速緩存對象的狀態。

請糾正我,因爲真正的說我不明白這個聲明,這是在Hibernates自己的官方網站定義。

+0

這意味着您可以在數據庫中持久(存儲)具有狀態(值)的對象。 –

回答

4

beyond the scope of the JVM表示即使在JVM關閉後,狀態仍然存在。或者換一種說法,國家的存在並不依賴於JVM的存在。 Hibernate是一個ORM(對象關係映射)工具,通常用於映射Java對象到某個數據庫中的記錄。當以這種方式使用時,Hibernate將來自Java程序的狀態存儲在一個或多個數據庫表中。

考慮爲Person類的定義如下:

public class Person { 
    private String firstName; 
    private String lastName; 

    public Person(String firstName, String lastName) { 
     this.firstName = firstName; 
     this.lastName = lastName; 
    } 

    // getters and setters 
} 

假設創建2個Person對象是這樣的:

Person p1 = new Person("Jon", "Skeet"); 
Person p2 = new Person("Gordon", "Linoff"); 

如果你堅持使用Hibernate這些Person對象數據庫,你可能會得到一個Person表看起來像這樣:

+-----------+----------+ 
| firstName | lastName | 
+-----------+----------+ 
| Jon  | Skeet | 
| Gordon | Linoff | 
+-----------+----------+ 

如果您停止Java應用程序並重新啓動它,Hibernate也可以在相反的方向上運行,以便從此數據庫表中的行創建Person對象。

+0

小修正。它不是關於'JVM關閉',關於對象範圍。 –

+0

'超越JVM的範圍'意味着它在JVM關閉後可用。 – Keppil

+0

很好地解釋了@tim謝謝。 –

1

這意味着數據獲取存儲就像一個文件或數據庫中,即使你的應用程序被關閉,以便下一次ü可以使用該數據再次

+0

感謝庫馬爾你的解釋也不錯,但蒂姆的更清楚,這就是爲什麼我接受那個答案。 –

+0

完全沒問題,堆棧的目標是互相幫助,而不是獲得聲望,即使我認爲他的答案比我好,如果最好的答案被接受,它也會給別人帶來好處。歡呼聲 –

+0

Cheersssssss !!! –

2

持久性是指保存在地方數據將保持甚至後持續某處電源已關閉。例如,在文本文件中保存數據也是持久性的。數據庫是堅持數據的途徑之一。

你知道這一點,它只是一個大詞。

超出JVM的範圍意味着數據應該保留或保留,即使在JVM關閉後,即您的應用程序關閉

Hibernate在數據庫中保存或保存Java bean /對象。所以它被稱爲ORM對象到關係映射框架。這很簡單,他們只是使用很多花哨的話,所以它聽起來很酷。

+0

謝謝奧利弗你的解釋也不錯,但蒂姆的更清楚,這就是爲什麼我接受這個答案。 –

+0

@HNeNeBEE沒有Probs! (y)的 – Oliver