桃园结义 , 版权所有丨如未注明 , 均为原创丨转载请注明

Java对象的持久化概念

桃园小编 543次浏览 0个评论 扫描二维码

       转载地址:http://book.51cto.com/art/201009/227402.htm

java中持久化技术是为了将java对象与数据库表对应。

java中储存很多对象在内存是很浪费空间的,内存过于昂贵,与硬盘,磁带,光盘,等外存相比,内存的价格要高2~3个数量级,而且维持成本也高,至少需要一直供电。所以即使对象不需要永久保存,也会因为内存的容量限制不能一直呆在内存中,需要持久化来缓存到外存。

 持久化是将程序数据在持久化状态和瞬间状态间转换的机制。通俗的讲,就是瞬间数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化到数据库中,能够长久保存)。

   例如花果山猴子们的信息作为特定应用领域里的业务数据,有两种表现形式:

    1.在内存中表现为Monkey对象。

    2.在关系数据库中表现为MONKEYS表中的记录。

    当java程序在内存中创建一个Monkey对象后,他不可能永远存在。最后,他要么从内存中清除,要么被持久化到数据库中。内存无法永久地保持数据,因此必须对Monkey对象进行持久化。否则,如果Monkey对象没有被持久化,那么用户在应用程序运行时创建的猴子信息将在应用程序结束后随之消失。而一旦Monkey对象被持久化,它就可以在应用程序再次运行时被重新加载到内存,并重新构造出Monkey对象。图 1-11显示了Monkey对象的持久化过程。

  



    Hibernate胡英文原意是冬眠,冬眠与持久化之间亦什么关系呢?

     java对象存在于内存中,Hibernate能够把java对象永久保存到关系数据库中。形象的理解,可以说Hibernate能够让内存中的java对象在关系数据库中“冬眠”。

    侠义的理解,“持久化”仅仅指把对象永久保存到数据库中;广义的理解,“持久化”包括和数据库相关的各种操作:

    保存:把对象永久保存到数据库中。

    更新:更新数据库中对象的状态。

    删除:从数据库中删除一个对象。

    加载:根据特定的OID(Object Identifier,对象标识符),把一个对象从数据库加载到内存中。

    查询:根据特定的查询条件,把符合查询条件的一个或多个对象从数据库加载到内存中。

    

    确切的说,数据库中存放的是关系数据,而不是对象。但书中常常出现“从数据库中加载对象”、“删除数据库中的对象”、以及“更新数据库中的对象”等说法。这主要是站在Hibernate的客户程序端的角度来看待数据库访问操作的。Hibernate封装了数据库访问细节,为客户程序提供了面向对象的持久化语义。客户程序可以假象数据库中存放的就是对象,只需委托Hibernate从数据库中加载对象、删除对象、以及更新对象就绪,至于Hibernate如何把这些对象映射为数据库中的相应关系数据,这就属于Hibernate的分内之事了。

百度已收录

桃园结义 , 版权所有丨如未注明 , 均为原创丨转载请注明Java对象的持久化概念

您必须 登录 才能发表评论!