使用Hibernate
框架之前,首先需要我们对Hibernate
的核心接口,其核心接口一共有5
个,分别是Session
、SessionFactory
、Transaction
、Query
和Configuration
。在5
个接口中在一般的项目开发中都会使用到,通过这些接口可以对持久化对象进行存取,事务的控制等。下面分别对这个5
个接口进行介绍:
一、Session
接口:
Session
接口对于Hibernate
开发人员来说是一个重要的接口,在Hibernate
中,实例化的Session
是一个轻量级的类,创建和销毁它都不占用很多资源,这在项目开发中确实很重要,因为在客户程序中,可能会不断地创建以及销毁Session
对象,如果Session
的开销太大,会给系统带来不良影响。但值得注意的是Session
对象是非线程安全的,因此在你的设计中,最好是一个线程只创建一个Session
对象。
Session
可以看作是介于数据连接与事务管理的一种中间接口,我们可以将Session
想象成一个持久化对象的缓冲区,Hibernate
能检测到这些持久化对象的改变,并及时刷新数据库。我们也可以称Session
是一个持久层管理器,因为它包含一些持久层相关的操作,如存储持久对象到数据库,以及从数据库获取等等。
二、SessionFactory
接口:
通过这个接口我们可以看到Hibernate
用到的一个设计模式-
工厂设计模式,用户从工厂类SessionFactory
中取得Session
的实例。
Configuration
的实例会根据当前的配置信息,构造SessionFactory
实例。
这里需要注意的是SessionFactory
并不是轻量级的!其设计目的是让它能在整个应用共享,换句话说,一个项目通常只需要一个SessionFactory
就够了,但是当你的项目要操作多个数据库时,那你就必须为每个数据库指定一个SessionFactory
。
SessionFactory
是线程安全的。
SessionFactory
在Hibernate
中实际起到一个缓冲区的作用,它缓冲了Hibernate
自动生成的SQL
语句和一些其他的映射数据,还缓冲了一些将来有可能重复利用的数据。
三、Configuration
接口:
Configuration
接口的作用是对Hibernate
进行配置,以及对它进行启动,在Hibernate
的启动过程中,Configuration
类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory
对象。
Configuration
管理Hibernate
的配置信息都是从配置文件hibernate.cfg.xml
或者Hibernate.properties
读取的,当然也可以自定义文件名称,只要在实例化Configuration
的时候指定具体的路径就可以了。
虽然Configuration
接口在整个Hibernate
项目中只扮演着一个很小的角色,但它是启动hibernate
时你所遇到的每一个对象。
四、Transaction
接口:
Transaction
接口是一个可选的API
,你可以选择不使用这个接口,取而代之的是Hibernate
的设计者自己写的底层事务处理代码。 Transaction
接口是对实际事务实现的一个抽象,这些实现包括JDBC
的事务、JTA
中的UserTransaction
、甚至可以是CORBA
事务。之所以这样设计是能让开发者能够使用一个统一事务的操作界面,使得自己的项目可以在不同的环境和容器之间方便地移值。
五、Query
和Criterial
接口:
Query
接口让你方便地对数据库及持久对象进行查询,它可以有两种表达方式:HQL
语言或本地数据库的SQL
语句。Query
经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作。
Criteria
接口与Query
接口非常类似,它允许你创建并执行面向对象的标准化查询。
需要注意的是Query
接口也是轻量级的,它不能在Session
之外使用。
其他接口:
Callback
接口:
当一些有用的事件发生时――例如持久对象的载入、存储、删除时,Callback
接口会通知Hibernate
去接收一个通知消息。一般而言,Callback
接口在用户程序中并不是必须的,但你要在你的项目中创建审计日志时,你可能会用到它。
策略接口:
Hibernate
与某些其它开源软件不同的还有一点――高度的可扩展性,这通过它的内置策略机制来实现。当你感觉到Hibernate
的某些功能不足,或者有某些缺陷时,你可以开发一个自己的策略来替换它,而你所要做的仅仅只是继承它的某个策略接口,然后实现你的新策略就可以了,以下是它的策略接口:
·
主键的生成
(IdentifierGenerator
接口)
·
本地SQL
语言支持 (Dialect
抽象类)
·
缓冲机制 (Cache
和CacheProvider
接口)
·
JDBC
连接管理
(ConnectionProvider
接口)
·
事务管理
(TransactionFactory, Transaction,
和
TransactionManagerLookup
接口)
·
ORM
策略 (ClassPersister
接口)
·
属性访问策略
(PropertyAccessor
接口)
·
代理对象的创建 (ProxyFactory
接口)
Hibernate
为以上所列的机制分别创建了一个缺省的实现,因此如果你只是要增强它的某个策略的功能的话,只需简单地继承这个类就可以了,没有必要从头开始写代码。
分享到:
相关推荐
1. **hibernate3.jar**:这是Hibernate的核心库,包含了所有主要的API和实现。包括实体管理、会话工厂、查询语言(HQL)解析器等核心功能。这个jar包是使用Hibernate进行数据持久化操作的基础,包含了Entity、...
4. **会话(Session)**:Hibernate的核心接口之一,它是与数据库交互的主要入口,提供了持久化操作的方法,如save()、update()、delete()、load()和get()等。 5. **事务(Transaction)**:在Hibernate中,事务处...
ORM是Hibernate的核心概念,它允许开发者用Java对象来代表数据库中的记录,通过对象的属性与数据库表的字段进行映射。在Hibernate中,这种映射通过配置文件(hbm.xml)或注解完成。 2. **Entity(实体)** 在...
2.4.1 Hibernate的核心接口 39 2.4.2 事件处理接口 41 2.4.3 Hibernate映射类型接口 41 2.4.4 可供扩展的接口 42 2.5 小结 43 2.6 思考题 45 第3章 第一个Hibernate应用 47 本章通过简单的helloapp应用例子,...
2.4.1 Hibernate的核心接口 2.4.2 事件处理接口 2.4.3 Hibernate映射类型接口 2.4.4 可供扩展的接口 2.5 小结 2.6 思考题 第3章 第一个Hibernate应用 3.1 创建Hibernate的配置文件 3.2 创建持久化类...
2.4.1 Hibernate的核心接口 39 2.4.2 事件处理接口 41 2.4.3 Hibernate映射类型接口 41 2.4.4 可供扩展的接口 42 2.5 小结 43 2.6 思考题 45 第3章 第一个Hibernate应用 47 本章通过简单的helloapp应用例子,...
2.4.1 Hibernate的核心接口 2.4.2 事件处理接口 2.4.3 Hibernate映射类型接口 2.4.4 可供扩展的接口 2.5 小结 2.6 思考题 第3章 第一个Hibernate应用 3.1 创建Hibernate的配置文件 3.2 创建持久化类...
2.4.1 Hibernate的核心接口 2.4.2 事件处理接口 2.4.3 Hibernate映射类型接口 2.4.4 可供扩展的接口 2.5 小结 2.6 思考题 第3章 第一个Hibernate应用 3.1 创建Hibernate的配置文件 3.2 创建持久化类...
2.4.1 Hibernate的核心接口 2.4.2 事件处理接口 2.4.3 Hibernate映射类型接口 2.4.4 可供扩展的接口 2.5 小结 2.6 思考题 第3章 第一个Hibernate应用 3.1 创建Hibernate的配置文件 3.2 创建持久化类...
在IT行业中,SSH(Spring、Struts、Hibernate)是一个经典的Java Web开发框架组合,用于构建高效、可维护的Web应用程序。这些jar包是SSH项目中常见的依赖库,它们提供了各种功能,如数据持久化、MVC架构和XML处理等...
主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、Hibernate高级应用、Spring核心之IoC、...
**3.6.2 可以服务于多个客户端的多线程程序** - **示例**:多客户端并发聊天室。 #### 第四章:JDBC技术 **4.1 概述** - **定义**:Java数据库连接技术。 - **目的**:允许Java程序与各种关系数据库交互。 **4.2 ...
### J2EE Web 开发关键...J2EE 技术栈包含了 Java Servlet、JSP、Spring、Hibernate 和 Struts 等核心组件,这些技术共同构成了企业级应用的基础。通过学习这些技术,开发者可以构建出功能强大且可扩展的 Web 应用。