spring整合hibernate的两种方式

时间:2021-10-19 12:51:01

       我们学过spring的同学都知道,spring可以整合其他的框架协同开发,大大的降低开发的时间和提高了效率,但是我们在配置的时候总会发生各种各样的问题,下面我记录一下我在配置的时候出现的问题和简单总结一下配置的过程

spring整合hibernate的两种方式

这个文件是hibernate的配置文件,里面配置了一个映射文件User.hbm.xml这个就不解释了,不懂的可以去参看hibernate的视频.然后我们都知道要和spring进行整合

spring整合hibernate的两种方式

在spring.xml文件中先配置一个数据库连接池,我用的是mysql数据库并且用了c3p0的连接池,其他连接池配置类似,然后我的mysql是绿色版的,没有密码,不需要安装,目前在百度上搜索"mysql下载"搜索出来的就是绿色版的,你们可以去常识一下

spring整合hibernate的两种方式

然后配置一个sessionFactoryBeab,可以看到这里使用了两种方式配置hibernate,第一种方式是引用我们之前hibernate配置文件,这个也是我比较推荐的,原因相信大家都懂.第二种方式是在spring.xml文件中直接进行配置,这也是可以的,配置方式就是我上面截图的并且注释了的代码,额外说一句,xml文件中的注释快捷键是:ctrl+shift+c


到此spring整合hinernate的配置就结束了

最后我就再给出事务的配置

spring整合hibernate的两种方式

这样子就可以在service层的方法上直接使用@Transactional进行标识这个方法是需要开启事务的,当然我们还可以配置事务的配置,这个我就不多说了.

但是这里采用了事务,就不能在hibernate配置中使用

<!-- 为当前线程绑定一个session -->
<property name="current_session_context_class">thread</property>

原因是这会导致hibernate自己去生成一个session,spring管理的时候又会生成一个,直接导致了@Transactional标识的注解不能开启事务,所以需要注意