粗谈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是一个开源的ORM框架,在很多程度上弥补了jdbc的不足之处,在中小企业中是比较好用的一个框 架,为什么说在中小型企业中比较流行的,因...

Spring事务中Hibernate语句执行的顺序

在Spring Service中,如果完全使用Hibernate 进行操作,那么只有在事务结束时都会按顺序刷新所有语句的结果到数据库,但如果事务中存在原始SQL语句,那么执行顺序就会出现问题,原始SQ...

Hibernate基本执行流程

  • Baple
  • Baple
  • 2014年09月12日 15:29
  • 6578

Java数据结构——ArrayList简介

ArrayList是Java中最基础的数据结构之一,即顺序表。本篇文章将从源码角度简单介绍ArrayList的基本实现原理。...

谁是你心目中最优秀的ajax框架

引语   毫无疑问,Ajax作为当前最火爆的技术之一,其优秀的框架层出不穷。Prototype、Dwr、Dojo、JQuery、YUi…… 都是非常出色的产品。本专题为您介绍了目前十大流行的Ajax...

hibernate事务提交执行sql顺序

sql hibernate 顺序

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

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

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

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

【p6spy】程序员开发利器P6spy——打印执行sql语句,mybatis、ibatis、Hibernate均可使用

一、前言      在开发的过程中,总希望方法执行完了可以看到完整是sql语句,从而判断执行的是否正确,所以就希望有一个可以打印sql语句的插件。p6spy就是一款针对数据库访问操作的动态监控框架,他...

Hibernate的一个奇怪报错,原来是工程下.classpath文件中jar包的引用顺序导致的

不报错的.classpath文件: 报错的.classpath文件:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:粗谈Hibernate——从执行顺序来看Hibernate
举报原因:
原因补充:

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