知识大全 为什么用Spring来管理Hibernate

Posted

篇首语:一身转战三千里,一剑曾百万师。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 为什么用Spring来管理Hibernate相关的知识,希望对你有一定的参考价值。

为什么用Spring来管理Hibernate?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    为什么要用Hibernate框架?这个在《Hibernate介绍》博客中已经提到了         既然用Hibernate框架访问管理持久层 那为何又提到用Spring来管理以及整合Hibernate呢?        首先我们来看一下Hibernate进行操作的步骤 比如添加用户的一个步骤 在此为了解释提出的问题 只做一个截图 若想看完整代码示例 可以参考《八步详解Hibernate的搭建及使用》        看截图 可以看出 Hibernate操作的步骤如下         获得Configuration对象        创建SessionFactory        创建Session        打开事务        进行持久化操作 比如上面的添加用户操作        提交事务        发生异常 回滚事务        关闭事务        使用Hibernate进行访问持久层 每次都要进行这八个步骤 但是若使用Spring对Hibernate进行管理 又是怎么样的呢?        首先 Spring对Hibernate提供了HibernateTemple类 这个模版类对session进行封装 并且Spring会默认为自动提交事务 所在在dao层直接写入this save(Object)即可         在实践中 遇到了一个问题 无法插入数据库 经过一番折腾 多次实验 验证 总结一下原因 结果如下         注意 所有的操作都必须在事务中进行 若单纯的使用Hibernate 则事务需要手动开启提交关闭操作 当然也可以在Hibernate配置文件中 自动提交         若使用Spring管理Hibernate 则默认的是自动提交事务 但是在此 需要注意的是 若使用Spring在配置文件中配置数据源而不使用hibernate cfg xml 则可以成功插入数据库 因为HibernateTemple默认提供自动提交事务 在Spring的配置文件配置数据源如下 使用此数据源需要的jar如下 mons dbcp jar mons pool jar msbase jar mssqlserver jar msutil jar sqljdbc jar;        <bean id= dataSource   class= mons dbcp BasicDataSource >        <property name= driverClassName value= microsoft jdbc sqlserver SQLServerDriver >        </property>        <property name= url value= jdbc:sqlserver:// : ;database=test ></property>        <property name= username value= sa ></property>      <property name= password value= ></property>        </bean>        <bean id= sessionFactory class= springframework orm hibernate LocalSessionFactoryBean >        <property name= dataSource ref= dataSource ></property>        <! hibernate属性配置 >        <property name= hibernateProperties >        <props>        <prop key= hibernate dialect > hibernate dialect SQLServerDialect</prop>        <prop key= hibernate hbm ddl auto >update</prop>        </props>        </property>        !          如果采用传统的hbm xml的方式 可以采用如下方式来简化注册hbm xml的步骤 并且class为LocalSessionFactoryBean >        <property name= mappingLocations >        <list>        <value>classpath:User hbm xml</value>        </list>        </property>        </bean>        若Spring中不是直接配置数据源 而是使用hibernate cfg xml 则是无法若直接this save(Object) 则无法插入数据库中 但是可以保存中缓存中 因为所有的操作都是在事务中执行的 而hibernate cfg xml数据源则默认是不是自动提交的 解决的办法如下 可以在hibernate cfg xml中填写         <property name= nnection automit >true</property>        以下Spring使用hibernate cfg xml数据源        <bean id= sessionFactory class= springframework orm hibernate LocalSessionFactoryBean >        <property name= configLocation >        <value>classpath:hibernate cfg xml</value>        </property>        <property name= mappingLocations >        <list>        <value>classpath:User hbm xml</value>        </list>        </property>        </bean>        以上 介绍了Spring来管理Hibernate的好处在于 不用手动创建SessionFactory Session 不用手动开启提交关闭事务 这一切完全都是由Spring来管理 并且Spring还提供了HibernateTemple的工具 使一切操作简单方便         dao层在Spring配置文件中配置如下         《span >bean id= userDao class= UserDao UserDaoImpl >        <property name= sessionFactory ref= sessionFactory ></property>        </bean></span>        则在dao层的代码如下         package UserDao;        import springframework orm hibernate HibernateTemplate;        import user User;        public class UserDaoImpl extends HibernateTemplate implements UserDao         @Override        public void insert(User user)         this save(user)                         这只是其中的关键的代码 至于完整的小demo 已经上传         正如上述所说 一切操作尽在事务中 事务这个概念想必大家不陌生吧 一般情况 事务应该在业务逻辑层 而不是在dao层应用 并且Spring对事务有很好的封装 自己有一套事务管理的封装 使业务逻辑与事务管理分离 进一步达到解耦作用 下一篇博客 我们继续会讲解Spring管理Hibernate中的事务管理 cha138/Article/program/Java/ky/201311/28636

相关参考

知识大全 用Spring、Hibernate和JBoss简易步骤

用Spring、Hibernate和JBoss简易步骤  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 用struts+spring+hibernate组装web应用

  其实就算用Java建造一个不是很烦琐的web应用程序也不是件轻松的事情当为一个应用程序建造一个构架时有许多事情需要考虑从高层来说开发者需要考虑怎样建立用户接口(userinterfaces)?在哪

知识大全 spring+hibernate+jbpm整合成功

  终于搞定了在此感谢chenjin的指点  从日整合失败后这块就一直是我的心病我甚至都跑去了去发了一个帖这还是我第一次用英文问问题呢  最后的配置结果是  hibernatecfgxmljbpmcf

知识大全 Spring系列第2部分:当Hibernate遇上Spring

Spring系列第2部分:当Hibernate遇上Spring  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 Spring整合HIbernate

Spring整合HIbernate  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Spring整

知识大全 Spring操作Hibernate更方便

Spring操作Hibernate更方便  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  软件系统

知识大全 Struts+Spring+Hibernate快速入门

Struts+Spring+Hibernate快速入门  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 Struts&Spring&Hibernate面试总结

Struts&Spring&Hibernate面试总结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 当Spring遇到Hibernate的时候

当Spring遇到Hibernate的时候  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  )介绍

知识大全 Spring动态加载Hibernate映射文件

Spring动态加载Hibernate映射文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb