由于SpringBoot2.3.1默认与Hibernate集成是使用JPA的方式,JPA规范不兼容spring低版本与Hibernate集成实现BaseDao操控数据读取,这里通过手动配置实现兼容。
具体步骤:
1、使用hibernate首先在pom.xml中需要引入一下几个依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
hibernate是使用JPA规范进行开发的,所以spring使用jpa依赖引入hibernate。jdbc的依赖引入不是必须的。
2、启动入口@SpringBootApplication注解中要排除数据源自动配置、JPA自动配置及hibernateJpa自动配置
代码如下:
//启动时将数据源自动配置、JPA自动配置及hibernateJpa自动配置排除掉,如果不排除则将按照springboot的自动设置运行程序,自己写的配置hibernate配置无法生效
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class,
JpaRepositoriesAutoConfiguration.class,
HibernateJpaAutoConfiguration.class })
// 开启事务管理
@EnableTransactionManagement(proxyTargetClass = true)//启用注解事务,即可以使用@Transactional注解来控制事务等同于xml配置方式的 <tx:annotation-driven />
@EnableAspectJAutoProxy//允许AspectJ自动生成代理
public class HibernateproApplication {
public static void main(String[] args) {
SpringApplication.run(HibernateproApplication.class, args);
}
}
@EnableTransactionManagement(proxyTargetClass = true)作用是启用注解事务,即可以使用@Transactional注解来控制事务等同于xml配置方式的 <tx:annotation-driven />
@EnableAspectJAutoProxy 作用是允许AspectJ自动生成代理,将@Aspect 注解标注的组件类实现AOP功能。
3、在application.properties配置文件中,进行数据源的配置,下面代码使用了两个数据源进行多数据源的配置
app.datasource.first.driver-class-name=com.mysql.cj.jdbc.Driver
app.datasource.first.jdbc-url=jdbc:mysql://192.168.1.110:3306/lovemall?&serverTimezone=UTC&autoReconnect=true&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
app.datasource.first.username=root
app.datasource.first.password=abc7048461
app.datasource.first.type=com.zaxxer.hikari