Hibernate API 中的接口可以分为以下几类 :
( 1 ) 提供访问数据库的操作的接口,包括 session 、 Transaction 、 Query 接口;
( 2 ) 用于配置 Hibernate 的接口, Configuration ;
( 3 ) 间接接口,使应用程序接受 Hibernate 内部发生的事件,并作出相关的回应,包括: Interceptor 、 Lifecycle 、 Validatable ;
( 4 ) 用于扩展 Hibernate 功能的接口,如 UserType 、 CompositeUserType 、 IdentifierGenerator 接口。
Hibernate 内部还封装了 JDBC 、 JTA ( Java Transaction API )和 JNDI ( Java Naming And Directory Interface )。其中, JDBC 提供底层的数据访问操作,只要用户提供了相应的 JDBC 驱动程序, Hibernate 可以访问任何一个数据库系统。 JTA 和 JNDI 使 Hibernate 能够和 J2EE 应用服务器集成。
(1)优点:
a.Hibernate 使用 Java 反射机制 而不是字节码增强程序来实现透明性。
b.Hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。
c. 它支持各种关系数据库,从一对一到多对多的各种复杂关系。
(2)缺点:
Hibernate限制您所使用的对象模型。例如,一个持久性类不能映射到多个表。
(1)什么叫持久化?
在图1右中,分离出的持久化层封装了数据访问细节,为业务逻辑层提供了面向对象的API。
持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。
(2)什么叫持久层?
持久层(Persistence Layer),即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面,将数据使用者和数据实体相关联。
(3)为什么要持久化?增加持久层的作用是什么?
数据库的读写是一个很耗费时间和资源的操作,当大量用户同时直接访问数据库的时候,效率将非常低,如果将数据持久化就不需要每次从数据库读取数据,直接在内存中对数据进行操作,这样就节约了数据库资源,而且加快了系统的反映速度。
增加持久化层提高了开发的效率,使软件的体系结构更加清晰,在代码编写和系统维护方面变得更容易。特别是在大型的应用里边,会更有利。同时,持久化 层作为单独的一层,人们可以为这一层独立的开发一个软件包,让其实现将各种应用数据的持久化,并为上层提供服务。从而使得各个企业里做应用开发的开发人 员,不必再来做数据持久化的底层实现工作,而是可以直接调用持久化层提供的API。
(4)目前在持久化层领域,实现模式有以下几种:
A 业务逻辑和数据访问耦合
B 主动域对象模式
C ORM模式(Object Relational Mapping),即对象关系映射,hibernate就是这种实现。
D JDO模式
E CMP模式