Session接口
Session接口对于Hibernate 开发人员来说是一个最重要的接口。然而在Hibernate中,实例化的Session是一个轻量级的类,创建和销毁它都不会占用很多资源。这在实际项目中确实很重要,因为在客户程序中,可能会不断地创建以及销毁Session对象,如果Session的开销太大,会给系统带来不良影响。但值得注意的是Session对象是非线程安全的,因此在你的设计中,最好是一个线程只创建一个Session对象。
在Hibernate的设计者的头脑中,他们将session看作介于数据连接与事务管理一种中间接口。我们可以将session想象成一个持久对象的缓冲区,Hibernate能检测到这些持久对象的改变,并及时刷新数据库。我们有时也称Session是一个持久层管理器,因为它包含这一些持久层相关的操作,诸如存储持久对象至数据库,以及从数据库从获得它们。请注意,Hibernate 的session不同于JSP应用中的HttpSession。当我们使用session这个术语时,我们指的是Hibernate中的session,而我们以后会将HttpSesion对象称为用户session。
SessionFactory 接口
这里用到了一个设计模式――工厂模式,用户程序从工厂类SessionFactory中取得Session的实例。
令你感到奇怪的是SessionFactory并不是轻量级的!实际上它的设计者的意图是让它能在整个应用中共享。典型地来说,一个项目通常只需要一个SessionFactory就够了,但是当你的项目要操作多个数据库时,那你必须为每个数据库指定一个SessionFactory。
SessionFactory在Hibernate中实际起到了一个缓冲区的作用,它缓冲了Hibernate自动生成的SQL语句和一些其它的映射数据,还缓冲了一些将来有可能重复利用的数据。
Configuration 接口
Configuration接口的作用是对Hibernate进行配置,以及对它进行启动。在Hibernate的启动过程中,Configuration类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象。
虽然Configuration接口在整个Hibernate项目中只扮演着一个很小的角色,但它是启动hibernate时你所遇到的每一个对象。
Transaction 接口
Transaction接口是一个可选的API,你可以选择不使用这个接口,取而代之的是Hibernate的设计者自己写的底层事务处理代码。 Transaction接口是对实际事务实现的一个抽象,这些实现包括JDBC的事务、JTA中的UserTransaction、甚至可以是CORBA事务。之所以这样设计是能让开发者能够使用一个统一事务的操作界面,使得自己的项目可以在不同的环境和容器之间方便地移值。
Query和Criteria接口
Query接口让你方便地对数据库及持久对象进行查询,它可以有两种表达方式:HQL语言或本地数据库的SQL语句。Query经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作。
Criteria接口与Query接口非常类似,它允许你创建并执行面向对象的标准化查询。
值得注意的是Query接口也是轻量级的,它不能在Session之外使用。
Callback 接口
当一些有用的事件发生时――例如持久对象的载入、存储、删除时,Callback接口会通知Hibernate去接收一个通知消息。一般而言,Callback接口在用户程序中并不是必须的,但你要在你的项目中创建审计日志时,你可能会用到它。
原文:http://wallimn.iteye.com/blog/694458
分享到:
相关推荐
HQL允许开发者使用对象术语进行查询,而Criteria API则提供了更强大的动态查询能力。 - Transactions:Hibernate对事务的支持使得开发者可以轻松处理数据库事务,确保数据的一致性和完整性。 - Caching:为了提高...
**HIBERNATE技术总结** Hibernate 是一个流行的 Java 应用程序框架,它提供了一种对象关系映射(ORM)解决方案,将数据库操作转化为面向对象的编程。此文档旨在研究和对比 Hibernate 技术的不同方面,帮助开发者更...
Hibernate是一个流行的ORM框架,它的目标是减少与数据库持久化相关的编程任务,消除特定数据库厂商的SQL代码依赖。 **Hibernate**在Java应用程序中扮演着中间件的角色,它不关心具体的业务领域,能连接任何Java应用...
这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。 SessionFactory接口 SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建...
对象/关系数据库映射(object/relational mapping (ORM))这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。 Hibernate不仅仅管理Java类到数据库表的映射(包括Java数据类型到...
- **Stack Overflow**:提问和解答Hibernate相关问题的有效平台。 ### 结语 以上内容涵盖了Hibernate 2.1.6版本的主要知识点,通过这些内容的学习,可以帮助开发者更好地理解和使用Hibernate框架,从而提高开发...
例如,在实体对象的状态方面,Hibernate定义了“瞬态”、“持久化”和“分离”等状态,而JPA则使用“new”、“managed”、“detached”和“removed”等术语来描述类似的概念。这些相似之处使得从Hibernate迁移到JPA...
对象/关系数据库映射(object/relational mapping (ORM))这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。 Hibernate不仅仅管理Java类到数据库表映射(包括Java数据类型到...
《Hibernate Annotations中文帮助文档》是针对Java开发人员的一份详细指南,主要讲解如何使用Hibernate ORM框架中的注解来实现数据库对象的映射。该文档涵盖了从基础到高级的各种概念,帮助开发者更高效地管理和操作...
7. Hibernate中,对象的状态包括:暂时态、持久态、游离态和脱管态(会话态是不常用的术语,实际上指的是持久态)。其中,持久态对象与Session有关系,Session会缓存这些对象并负责其变化同步至数据库。 8. 持久态...
### Hibernate Annotation 中文文档知识点概览 #### 一、创建注解项目 ##### 1.1 系统需求 在创建一个使用 Hibernate 注解的项目之前,需要满足一定的系统环境需求,例如支持 Java 的开发环境、JDK 版本、支持 ...
此外,还有一些场景下会用到所谓的“三级缓存”,虽然这一术语在官方文档中并未明确提及,但在实际应用中通常指的是查询缓存之外的一种自定义缓存策略。下面将详细探讨如何在Hibernate中配置二级缓存,并简要介绍...
在这篇文档中,组件这一术语指的是面向对象的合成概念(而并不是系统构架层次上的组件的概念)。举个例子, 你对人(Person)这个概念可以像下面这样来建模: public class Person { private java.util.Date ...
HQL允许开发者以类和对象的术语来编写查询,而不是数据库的表和列。 6. **Criteria API**:这是另一种用于构建动态查询的方式,提供了更面向对象的API,可以在运行时构建查询,适用于复杂的查询需求。 7. **第二级...
了解实体类、持久化属性、主键、对象状态等基本术语。 2. **配置与环境搭建**:学习如何配置Hibernate,包括hibernate.cfg.xml文件的编写,以及JDBC连接池的设置。 3. **对象关系映射(ORM)**:研究Hibernate的...
Hibernate的目标是对于开发者通常的数据持久化相关的编程任务,解放其中的95%。对于以数据为中心的程序来说,它们往往只在数据库中使用存储过程来实现商业逻辑,Hibernate可能不是最好的解决方案;对于那些在基于Java的...
“hibernate ano”这一术语虽然在描述和部分文件内容中没有明确解释,但可以推测其指向的是关于Hibernate框架的高级主题或特定功能。通过对上述知识点的深入了解,我们不仅能够更好地理解Hibernate的工作原理,还能...
【术语表】文档的附录通常包含术语表,解释了在文档中出现的关键术语,这对于初学者来说是非常有用的参考资料。 总的来说,Hibernate注解大大简化了Java应用与数据库之间的交互,使得ORM更加直观,同时也提供了丰富...