1.1 持久化及ORM概念
无论是JDBC还是Hibernate,都属于“持久化”这个概念的范畴,只不过Hibernate是一种更高级和更有效的解决方案。在这一节中,将要了解持久化及持久化层的概念,以及持久化解决方案中的ORM,接着了解Hibernate与它们之间的关系。
1.1.1 持久化的概念
几乎所有应用程序都需要操作持久化数据。持久化是应用程序开发的一个基础概念——是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。数据模型可以是任何数据结构或对象模型,存储模型可以是关系型数据库表、XML文件、二进制文件等。
Java的持久化,通常是指使用SQL将数据存储在关系型数据库中。
1.1.2 持久化层
在大中型应用中,都会按Java class的作用来进行划分,这就有了层的概念,如表现层、业务逻辑层、持久化层。将与持久化相关的类或组件打包在一起,就是多层系统中的持久化层(Persistence Layers)。
如图1.1所示,持久化层是专门与数据库打交道的层,作为基础它被业务层调用。
图1.1 持久化层是分层体系结构的基础
1.1.3 ORM的概念
对象持久化或持久化层的实现有若干方案,例如通过JDBC调用SQL语句存取数据的方式,还有序列化对象的方式等。就技术发展的现状而言,ORM是最好的方式。
ORM是持久化的一种解决方案,主要是把对象模型和关系型数据库关系模型映射起来,并且使用元数据对这些映射进行描述。如图1.2所示,实体类的定义可以和数据表的定义映射起来,类的属性可以和数据表的字段映射起来。内存中的一个实体对象代表一行已经存在的数据或即将插入的数据。这样映射起来之后,通过某种自动化的SQL生成机制便可达到“操作对象就是操作数据库”的目标。
图1.2 ORM示意图
具体来说,ORM解决方案提供以下四个主要功能。
● 基本增删改查的API
例如session.save(aSeeker),等效于执行一条insert语句。
● 对象或属性查询的API
例如session.createQuery("from Seeker").list()可以查询出对应ijob_seeker表所有行的所有Seeker对象。
● 规范映射元数据
ORM解决方案需要规范映射的方式,通常选择XML存储映射元数据,因为XML便于读取和规范格式。
● 事务控制、延迟加载等优化功能
点评
对象持久化是一个基本概念,ORM是这个概念的一种解决方案,而Hibernate是ORM的一个实现,是一个完整的ORM工具,提供了上述的所有ORM功能。