粗谈Hibernate——从执行顺序来看Hibernate

原创 2007年09月28日 16:50:00

1.实例化Configuration对象

   Hibernate在WEB-INF下查找hibernate.cfg.xml配置文件,根据hibernate.cfg.xml配置文件中配置的信息实例化Configuration对象 。如果使用了事件系统的话,在实例化Configuration对象后还应对事件监听器进行注册。这里值得一提的是配置的问题。一般为每个持久化类配置一个映射文件,其中包括基本映射和关系映射。在hibernate.cfg.xml中,使用<session-factory />元素下的<mapping resource="Xxxx.hbm.xml" />子元素来罗列所有的持久化类的映射文件,使Configuration在实例化时加载这些持久化类的配置信息。

2.实例化SessionFactory对象

   通常Configuration的对象先调用configure()方法,以次来或得一个返回值,该返回值调用buildSessionFactory()方法来实例化SessionFactory对象。

3.实例化Session对象

   有了SessionFactory对象后,它可以调用方法openSession()或openSession(Interceptor it)来实例化一个Session对象。如果没有使用拦截器就使用openSession()方法,使用了拦截器的话则使用openSession(Interceptor it)。这里的拦截器是一种事件框架,它实现了Interceptor接口的类,通过Interceptor接口,可以在数据进入数据库之前,对数据进行最后的检查,如果数据不符合要求,则可以修改数据,从而避免非法数据进入数据库。其实,通过Configuration还可以启用全局拦截器。1中所说的事件系统是功能更强大的事件框架,该事件系统可以替代拦截器,也可以作为拦截器的补充来用,详细内容请参看“[读书总结]Hibernate的事件框架 ”那篇文章。

4.开始事务

   在对数据库访问之前应该设置事务的开始点,告诉系统从哪儿开始对数据库进行操作,以便于让系统成功提交事务时的作用范围。

5.访问数据库

   对数据库的操作无外乎对数据库中的数据进行增,删,改,查等操作。Hibernate的查询体系是非常强大的,它包括HQL查询,条件查询以及SQL查询等。

   这里对Hibernate的查询不作细说,仅谈谈Hibernate的数据过滤。数据过滤不是一种常规的数据查询方法,而是一种整体的筛选方法。通过过滤数据也可以对数据进行筛选。过滤器与定义在类和集合上映射文件中的“where”约束子句非常相似,区别是过滤器可以带参数,应用程序可以在运行时决定是否启用给定的过滤器,以及使用什么样的参数值。而映射文件的“where”属性将一直生效,且无法动态传入参数。过滤器的用法与视图很相似,区别是试图在数据库中已经完成定义,而过滤器则还需要在应用程序中确定参数值。Hibernate过滤器起作用的时机要比一般的查询语句早。也就是说,在使用过滤器的情况下,进行数据查询时,过滤器先起作用,过滤下一些数据后再让查询语句去查。

6.提交事务

   提交事务时可能成功,也可能失败。若提交失败则进行回滚,回滚时取消在事务开始以来的所有操作,这就体现了事务的原子性。

7.关闭Session

   最后,关闭刚才实例化的Session对象。
 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

[读书总结]Hibernate的事件框架

通常,载Hibernate执行持久化的过程中,应用程序无法参与其中。因为所有的数据持久化操作,对用户都是透明的,所以用户无法加入自己的动作。     通过事件框架,Hibernate允许应用程序能响应...

换种思路去理解设计模式(中)

7   多个对象组成结构 7.1     过程描述   上一节介绍了如何创建一个对象。但大多数情况,一个对象是不够用的,这时候就需要把对象包装、封装、多对象组合。有时候还需要将一个组合作为...

系统架构领域的一些学习材料

系统架构是一个工程和研究相结合的领域,既注重实践又依赖理论指导,入门容易但精通很难,有时候还要讲点悟性,很具有“伪科学”的特征。要在此领域进阶,除了要不断设计并搭建实际系统,也要注意方法论和设计理念的...

Hibernate的SQL执行顺序引发的血案

因为Hibernate连表查询比较麻烦,在有些情况下一个业务方法有可能既用到了普通的hibernate查询又用到了hibernate的原生sql查询,如果没有控制好hibernate的执行顺序,有可能...

Hibernate学习——(二)细谈类功能

上一篇大致实现了Hibernate的功能,了解了基本配置,现在针对配置中出现的各种类进行一个学习。 一、Configuration 负责管理Hibernate的配置信息,包括: 1、Hibernate...

Hibernate 事务提交sql语句的顺序

最近做的项目有一个很麻烦的业务,一个操作里包含了insert,update,delete,select动作。 一开始起在一个hibernate事务里,发现在入库的时候有的时候数据对不上,后来查了下资...

hibernate字段注释和生成表的字段顺序和外键名称

hibernate修改源代码支持字段注释和生成表的字段顺序和外键名称

Hibernate 配置二级缓存 配置顺序

在使用hibernate 二级缓存的时候 由于hibernate核心配置文件的配置顺序(二级缓存相关的配置)不对出现异常。

Hibernate 事务提交sql语句的顺序

最近做的项目有一个很麻烦的业务,一个操作里包含了insert,update,delete,select动作。 一开始起在一个hibernate事务里,发现在入库的时候有的时候数据对不上,后来查了下资...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)