Hibernate逍遥游记
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5 Java对象的持久化概念

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

● 在内存中表现为Monkey对象。

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

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

图1-11 对象的持久化

Tips

Hibernate的英文原意是冬眠,冬眠与持久化之间有什么关系呢?Java对象存在于内存中,Hibernate能够把Java对象永久保存到关系数据库中。形象地理解,可以说Hibernate能够让内存中的Java对象在关系数据库中“冬眠”。

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

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

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

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

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

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

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