1. package org.springframework.orm.hibernate3.support;
  2. import org.hibernate.HibernateException;
  3. import org.hibernate.Session;
  4. import org.hibernate.SessionFactory;
  5. import org.springframework.dao.DataAccessException;
  6. import org.springframework.dao.DataAccessResourceFailureException;
  7. import org.springframework.dao.support.DaoSupport;
  8. import org.springframework.orm.hibernate3.HibernateTemplate;
  9. import org.springframework.orm.hibernate3.SessionFactoryUtils;
  10. public abstract class HibernateDaoSupport extends DaoSupport
  11. {
  12. private HibernateTemplate hibernateTemplate;
  13. // set注入sessionFactory
  14. public final void setSessionFactory(SessionFactory paramSessionFactory)
  15. {
  16. this.hibernateTemplate = createHibernateTemplate(paramSessionFactory);
  17. }
  18. //创建HibernateTemplate 俺们就是用这个对象
  19. protected HibernateTemplate createHibernateTemplate(SessionFactory paramSessionFactory)
  20. {
  21. return new HibernateTemplate(paramSessionFactory);
  22. }
  23. public final SessionFactory getSessionFactory()
  24. {
  25. return ((this.hibernateTemplate != null) ? this.hibernateTemplate.getSessionFactory() : null);
  26. }
  27. public final void setHibernateTemplate(HibernateTemplate paramHibernateTemplate)
  28. {
  29. this.hibernateTemplate = paramHibernateTemplate;
  30. }
  31. public final HibernateTemplate getHibernateTemplate()
  32. {
  33. return this.hibernateTemplate;
  34. }
  35. protected final void checkDaoConfig() {
  36. if (this.hibernateTemplate == null)
  37. throw new IllegalArgumentException("'sessionFactory' or 'hibernateTemplate' is required");
  38. }
  39. //创建session
  40. protected final Session getSession()
  41. throws DataAccessResourceFailureException, IllegalStateException
  42. {
  43. return getSession(this.hibernateTemplate.isAllowCreate());
  44. }
  45. protected final Session getSession(boolean paramBoolean)
  46. throws DataAccessResourceFailureException, IllegalStateException
  47. {
  48. return ((!(paramBoolean)) ? SessionFactoryUtils.getSession(getSessionFactory(), false) : SessionFactoryUtils.getSession(getSessionFactory(), this.hibernateTemplate.getEntityInterceptor(), this.hibernateTemplate.getJdbcExceptionTranslator()));
  49. }
  50. protected final DataAccessException convertHibernateAccessException(HibernateException paramHibernateException)
  51. {
  52. return this.hibernateTemplate.convertHibernateAccessException(paramHibernateException);
  53. }
  54. protected final void releaseSession(Session paramSession)
  55. {
  56. SessionFactoryUtils.releaseSession(paramSession, getSessionFactory());
  57. }

HibernateDaoSupport 源码的更多相关文章

  1. SSH框架总结(环境搭建+框架分析+实例源码下载)

    一.SSH框架简介 SSH是struts+spring+hibernate集成的web应用程序开源框架. Struts:用来控制的,核心控制器是Controller. Spring:对Struts和H ...

  2. 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新

    本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...

  3. C# ini文件操作【源码下载】

    介绍C#如何对ini文件进行读写操作,C#可以通过调用[kernel32.dll]文件中的 WritePrivateProfileString()和GetPrivateProfileString()函 ...

  4. 【原】FMDB源码阅读(三)

    [原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...

  5. 从源码看Azkaban作业流下发过程

    上一篇零散地罗列了看源码时记录的一些类的信息,这篇完整介绍一个作业流在Azkaban中的执行过程,希望可以帮助刚刚接手Azkaban相关工作的开发.测试. 一.Azkaban简介 Azkaban作为开 ...

  6. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  7. 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

    上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...

  8. 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例

    前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...

  9. SDWebImage源码解读之SDWebImageDownloaderOperation

    第七篇 前言 本篇文章主要讲解下载操作的相关知识,SDWebImageDownloaderOperation的主要任务是把一张图片从服务器下载到内存中.下载数据并不难,如何对下载这一系列的任务进行设计 ...

随机推荐

  1. 原生js基础问题的一些备忘

    1.在原生js里面  window.onload=function(){}  这个就相当于jquery中 $(document).ready(function(){}); 这样 2.getElemen ...

  2. noip赛前小结2

    嗯...赛前的第二份小结. 总结一下应该做的几个事情就好了. (1)关于做题顺序 做题顺序是很重要的. 开始的时候先审题,看清数据范围什么的,随便想一想,大概估计一下自己的得分. 第二题再把每道题仔细 ...

  3. Servlet复习1: 一个简单的Servlet的使用

    Servlet学习 1. Servlet与JSP的关系 2. Servlet的声明周期 3. 一个简单的Servlet的使用方法 什么是Servlet? 什么又是JSP? 继承了javax.servl ...

  4. jdbc 配置properties实现

    package com.web.study; import java.io.InputStream; import java.sql.Connection; import java.sql.Drive ...

  5. java.util 类 TreeSet<E>

    java.lang.Object≥ java.util.AbstractCollection<E> ≥ java.util.AbstractSet<E> ≥ java.util ...

  6. wordpress+php+mysql 配置

    下载并解压wordpress之后,在mysql新建一个数据库,命名,例如testDB1,然后在IIS中新建虚拟目录,指向wordress所在的目录,删除wordpress目录下的wp-config.p ...

  7. Javascript之对象的继承

    继承是面向对象语言一个非常重要的部分.许多OOP语言都支持接口继承和实现继承两种方式.接口继承:继承方法签名:实现继承:继承实际的方法.在ECMAScript中函数是没有签名的,所以也就无法实现接口继 ...

  8. 实验五 cmp传输与加解密

    ---恢复内容开始--- (一)实验内容 1.运行TCP代码,一人服务器,一人客户端 2.下载加解密代码,先编译运行代码,一人加密一人解密. 3.集成代码,一人加密后通过TCP 发送,加密使用DES或 ...

  9. 10个必备的移动UI设计资源站(转)

    创建移动设计模式是非常重要的一步,记住!这是为移动设备设计而不是web.不仅仅是移动屏幕远小于普通的电脑屏幕,关键是鼠标和键盘已经被手指替代了! 当然还有更重要的,说起来很苦逼,我们再也不能使用一种模 ...

  10. 如何解决链入js,innerHTML中文乱码问题呢?

    描述:发生在做suhuotong网站的时候,添加在线客服代码的时候三个地方1.将js以UTF-8无BOM编码:VS修改或者使用NotePad++修改2.<meta http-equiv=&quo ...