转自:https://blog.csdn.net/yz9612/article/details/80234377

springhibernate的DAO提供工具类:HibernateDaoSupport。该类主要提供如下两个方法,方便DAO的实现:    public final HibernateTemplate getHibernateTemplate()

public final void setSessionFactory(SessionFactory sessionFactory)

其中,setSessionFactory方法用来接收Spring的ApplicationContext的依赖注入,可接收配置在Spring的SessionFactory实例,getHibernateTemplate方法则用来根据刚才的SessionFactory产生Session,最后生成HibernateTemplate来完成数据库访问。

典型的继承HibernateDaoSupport的DAO实现的代码如下:

public class PersonDAOHibernate extends HibernateDaoSupport implements PersonDAO

{

//采用log4j来完成调试时的日志功能

private static Log log = LogFactory.getLog(NewsDAOHibernate.class);

//返回全部的人的实例

public List getPersons()

{

//通过HibernateTemplate的find方法返回Person的全部实例

return getHibernateTemplate().find("from Person");

}

/**

* 根据主键返回特定实例

* @ return 特定主键对应的Person实例

* @ param 主键值

public News getPerson(int personid)

{

return (Person)getHibernateTemplate().get(Person.class, new Integer(personid));

}

/**

* @ person 需要保存的Person实例

*/

public void savePerson(Person person)

{

getHibernateTemplate().saveOrUpdate(person);

}

/**

* @ param personid 需要删除Person实例的主键

* /

public void removePerson(int personid)

{

//先加载特定实例

Object p = getHibernateTemplate().load(Person.class, new Integer(personid));

//删除特定实例

getHibernateTemplate().delete(p);

}

}

可以与前面的PersonDAOHibernate对比,会发现代码量大大减少。事实上,DAO的实现依然借助于HibernateTemplate的模板访问方式,只是,HibernateDaoSupport将依赖注入SessionFactory的工作已经完成,获取HibernateTemplate的工作也已完成。该DAO的配置必须依赖于SessionFactory,具体的配置如下:

<?xml version="1.0" encoding="gb2312"?>

<!--  Spring配置文件的DTD定义-->

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

"http://www.springframework.org/dtd/spring-beans.dtd">

<!--  Spring配置文件的根元素是beans-->

<beans>

<!--定义数据源,该bean的ID为dataSource-->

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<!--  指定数据库驱动-->

<property name="driverClassName"><value>com.MySQL.jdbc.Driver</value></property>

<!--  指定连接数据库的URL-->

<property name="url"><value>jdbc:mysql://wonder:3306/j2ee</value></property>

<!--  root为数据库的用户名-->

<property name="username"><value>root</value></property>

<!--  pass为数据库密码-->

<property name="password"><value>pass</value></property>

</bean>

<!--定义Hibernate的SessionFactory-->

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<!--  依赖注入数据源,注入正是上文定义的dataSource>

<property name="dataSource"><ref local="dataSource"/></property>

<!--  mappingResouces属性用来列出全部映射文件>

<property name="mappingResources">

<list>

<!--以下用来列出所有的PO映射文件-->

<value>lee/Person.hbm.xml</value>

</list>

</property>

<!--定义Hibernate的SessionFactory的属性 -->

<property name="hibernateProperties">

<props>

<!--  指定Hibernate的连接方言-->

<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>

<!--  不同数据库连接,启动时选择create,update,create-drop-->

<prop key="hibernate.hbm2ddl.auto">update</prop>

</props>

</property>

</bean>

<!--  配置Person持久化类的DAO bean-->

<bean id="personDAO" class="lee. PersonDAOHibernate">

<!--  采用依赖注入来传入SessionFactory的引用>

<property name="sessionFactory"><ref local="sessionFactory"/></property>

</bean>

</beans>

程序中可以通过显式的编码来获得personDAO bean,然后执行CRUD操作。也可通过依赖注入,将personDAO的实例注入其他bean属性,再执行CRUD操作。

在继承HibrnateDaoSupport的DAO实现里,Hibernate Session的管理完全不需要Hibernate代码打开,而由Spring来管理。Spring会根据实际的操作,采用“每次事务打开一次session”的策略,自动提高数据库访问的性能。

继承HibernateDaoSupport实现DAO(spring整合hibernate)的更多相关文章

  1. 【Java EE 学习 53】【Spring学习第五天】【Spring整合Hibernate】【Spring整合Hibernate、Struts2】【问题:整合hibernate之后事务不能回滚】

    一.Spring整合Hibernate 1.如果一个DAO 类继承了HibernateDaoSupport,只需要在spring配置文件中注入SessionFactory就可以了:如果一个DAO类没有 ...

  2. 使用Spring整合Hibernate,并实现对数据表的增、删、改、查的功能

    1.1 问题 使用Spring整合Hibernate,并实现资费表的增.删.改.查. 1.2 方案 Spring整合Hibernate的步骤: 1.3 步骤 实现此案例需要按照如下步骤进行. 采用的环 ...

  3. SSH整合之spring整合hibernate

    SSH整合要导入的jar包: MySQL中创建数据库 create database ssh_db; ssh_db 一.spring整合hibernate带有配置文件hibernate.cfg.xml ...

  4. Spring整合Hibernate笔记

    1. Spring 指定datasource a) 参考文档,找dbcp.BasicDataSource i. c3p0 ii. dbcp <bean id="dataSource&q ...

  5. 【SSH框架】系列之 Spring 整合 Hibernate 框架

    1.SSH 三大框架整合原理 Spring 与 Struts2 的整合就是将 Action 对象交给 Spring 容器来负责创建. Spring 与 Hibernate 的整合就是将 Session ...

  6. Spring学习笔记六:Spring整合Hibernate

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6785323.html  前言:整合概述 Spring整合Hibernate主要是把Hibernate中常用的S ...

  7. 二 SSH整合:Spring整合Hibernate,无障碍整合&无核心配置整合,Hibernate模版常用方法,

    重建SSH项目 java项目可以直接复制,但是web项目除了改名字还要该配置,如下: 方式一:无障碍整合:带Hibernate配置文件 <?xml version="1.0" ...

  8. Spring 整合 Hibernate

    Spring 整合 Hibernate •Spring 支持大多数流行的 ORM 框架, 包括 Hibernate JDO, TopLink, Ibatis 和 JPA. •Spring 对这些 OR ...

  9. java框架之Spring(4)-Spring整合Hibernate和Struts2

    准备 导包 Struts2 导入 Struts2 zip 包解压目录下 'apps/struts-blank.war' 中所有 jar 包,如下: asm-3.3.jar asm-commons-3. ...

随机推荐

  1. PowerBuilder -- 结构类型(structure)

    http://bbs.csdn.net/topics/3501120743楼答复 PB的structure分两种,全局的和局部的,两者只有作用域不同. 全局的在file/new/pb object/s ...

  2. visual C++ & Makefile

    Makefile说明: visual c++ 不通过IDE有3中方式对工程进行编译链接. 1.MSBuild 编译链接(IDE就是使用MSBuild,需要工程的.vcxproj和.filters文件) ...

  3. GC入门指南(二)------GC工作原理

    本系列博客旨在帮助大家理解java垃圾收集器及其工作原理,这是系列的第二篇. java垃圾回收事实上是由一个能够进行自己主动内存管理的进程完毕的,这使得程序猿在写代码的时候不必过多考虑内存释放与回收的 ...

  4. 认识XmlReader

    认识XmlReader   摘要 XmlReader类是组成.NET的关键技术之一,极大地方便了开发人员对Xml的操作.通过本文您将对XmlReader有一个很好的认识,并将其应用到实际开发中. 目录 ...

  5. C - The C Answer (2nd Edition) - Exercise 1-1

    /* Run the "hello, world" program on your system. Experiment with leaving out parts of the ...

  6. Fragment 懒加载

    我们在遇到Activity嵌套Fragment的时候经常会遇到多个Fragment页面同时加载数据,一开始的时候就初始化很多页面,有的甚至进入页面的时候,会造成缓慢的现象,下面我们就针对这个问题做一下 ...

  7. springcloud和kubernetes对比

    由于这两个都不熟,所以在考虑学哪个. 先说结论:都要学,但是重点学k8s,k8s是一个更加完善的解决方案,springcloud被淘汰只是时间的问题. 从自己的经历和网上的文章两方面分析 个人经历: ...

  8. 九度OJ 1021:统计字符 (基础题)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5418 解决:3146 题目描述:     统计一个给定字符串中指定的字符出现的次数. 输入:     测试输入包含若干测试用例,每个测试用 ...

  9. 1、找出url汇总页,过滤出满足条件的详情页url;2、去详情页采集信息

    1.找出url汇总页,过滤出满足条件的详情页url:2.去详情页采集信息 package main import ( "fmt" "github.com/gocolly/ ...

  10. vue+vuex构建单页应用

    基本 构建工具: webpack 语言: ES6 分号:行首分号规则(行尾不加分好, [ , ( , / , + , - 开头时在行首加分号) 配套设施: webpack 全家桶, vue 全家桶 项 ...