2015-09-02 78 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