• Tag Archives: sessionFactory

SpringBoot2.1.1整合hibernate5.0.12使用SessionFactory

1、在pom.xml中加入如下依赖:

如果pom.xml中有如下jpa依赖,记得清注释以下内容:

如果出现FilterRegistrationBean报错,则意味着缺少SpringMVC的filter依赖,办法之一是引入含有该filter的依赖(eureka的server依赖也是包含的):

 

2、在application.properties中加入如下配置:

如果在低版本SpringBoot中进行配置,则可能会遇到错误“Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true”,此时则需要在application.properties补充配置:

因为SpringBoot的SessionFactory会自动注入默认的Transactional事务管理器,但这个事务管理器搭配hibernate的SessionFactory会出现数据库连接池线程卡死的问题,即假如配置线程池的连接数为10,一旦连接数大于10,则线程池会出现卡死的情况,因此我们需要自行配置hibernate的事务管理器来覆盖SpringBoot原有的Transactional事务管理器。

3、在SpringBoot的启动入口类上加入注解@ImportResource(“classpath:hibernate.xml”):

4、在resources目录中加入配置文件hibernate.xml:

5、增加事务管理配置,有两种方式,一种是使用SpringBoot的config注入方式,另外一种是加在hibernate.xml中。(记住下面5.1和5.2是二选一)

5.1、使用SpringBoot的confiug注入方式:增加配置文件TransactionAdviceConfig.java:

5.2、加在hibernate.xml中:

 

6、增加事务管理过滤器FilterConfig.java,自动开启事务管理:

7、搞掂,启动项目!在需要使用SessionFactory的地方使用如下方式注入即可:

 

常见问题

重复的依赖错误

错误提示如下:

这很有可能你的依赖中有重复的内容,如:

这个是需要注释掉的,不然会报错。

在SpringBoot中使用SessionFactory的方法

首先项目中已经使用JPA的方式连接,然后加入hibernate依赖:

 

然后有以下几种方式,选择一种合适自己的。

方法一:

增加配置文件HibernateConfig.java:

如果要使用@Transactional则需要在application.properties中加上:

 

方法二:(推荐)

在SpringBoot的启动类中加上:

如果要使用@Transactional则需要在application.properties中加上:

 

 

方法三:

在SpringBoot的启动类中加上:

如果要使用@Transactional则需要在application.properties中加上:

 

 

使用方法:

 

close