粗谈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的SQL执行顺序引发的血案

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

Hibernate基本执行流程

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

hibernate的执行流程

引言    hibernate是一个开源的ORM框架,在很多程度上弥补了jdbc的不足之处,在中小企业中是比较好用的一个框 架,为什么说在中小型企业中比较流行的,因...
  • qq_27298687
  • qq_27298687
  • 2016年10月08日 16:02
  • 1857

hibernate的执行流程

引言    hibernate是一个开源的ORM框架,在很多程度上弥补了jdbc的不足之处,在中小企业中是比较好用的一个框架,为什么说在中小型企业中比较流行的,因为对于数据量较大或者是表关系比价复...
  • u013045437
  • u013045437
  • 2016年10月07日 17:43
  • 3634

(第2讲)hibernate的开发流程及运行原理

1、hibernate的开发流程 创建项目——>基本框架示意图——>引入hibernate 开发包——> 开发hibernate (有3中方法)——>开发domain对象和对象关系映射文件——>手动...
  • weiyastory
  • weiyastory
  • 2016年10月08日 13:50
  • 1364

Hibernate执行流程和关系映射

一、Hibernate的执行流程 hibernate作为一个ORM框架,它封装了大量数据库底层的sql语句操作的方法,这样在执行hibernate的过程中理解hibernate的执行流程很有必要。 ...
  • muzili12a3
  • muzili12a3
  • 2017年03月05日 17:51
  • 239

Hibernate的执行过程

Hibernate运行过程: 1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件 2.由hibernate.cfg.xml...
  • csdn_kenneth
  • csdn_kenneth
  • 2017年05月11日 20:28
  • 191

Hibernate的执行流程

在Hibernate开发过程中通常会用到5个核心接口,分别为Configuration接口、SessionFactory接口、Session接口、Transaction接口、Query接口。这里先给出...
  • qq_19925065
  • qq_19925065
  • 2016年09月18日 16:53
  • 512

hibernate 三种状态详解

1.在对象中如果对象刚创建没有被持久化的话那么这样对象的状态就是临时状态,     比如 student stu = new student("ss");这个时候对象就是处于自由状态,那么为什么讲是处...
  • fo11ower
  • fo11ower
  • 2015年04月21日 14:21
  • 2777

hibernate简介(Session,几种状态,方法······等)概括全面,经典

2.Hibernate跟jdbc的关系          Hibernate封装JDBC,持久化内存中的对象,同步到数据库 .            1.关于封装,我得强调两点: ...
  • abc19900828
  • abc19900828
  • 2014年09月23日 17:44
  • 518
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:粗谈Hibernate——从执行顺序来看Hibernate
举报原因:
原因补充:

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