SpingBoot2.3.1集成Hibernate5之使用配置SessionFactory方式实现兼容BaseDao代码

由于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
### 整合ShardingSphere 5Spring Boot 2.3.1 #### 配置依赖项 为了使项目能够支持ShardingSphere的功能,在`pom.xml`文件中加入必要的Maven依赖: ```xml <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-spring-boot-starter</artifactId> <version>5.0.0-alpha</version> </dependency> <!-- 如果使用Druid作为连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> </dependency> ``` 上述配置引入了ShardingSphere JDBC的Spring Boot Starter以及可选的数据库连接池组件[^1]。 #### 应用属性设置 编辑项目的application.yml或application.properties来定义数据源和其他必要参数。以下是部分关键配置示例: ```yaml spring: shardingsphere: datasource: names: ds_0,ds_1 # 定义多个逻辑数据源名称 ds_0: # 实际物理数据源配置 type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3306/db_name?serverTimezone=UTC&useSSL=false username: root password: pwd ds_1: ... rules: sharding: tables: t_order: actual-data-nodes: ds_${0..1}.t_order${0..1} # 设置实际存储位置模式 table-strategy: standard: sharding-column: order_id # 指定用于分片的关键字段 sharding-algorithm-name: t_order_inline key-generate-strategy: column: order_id # 自增主键策略 key-generator-name: snowflake sharding-algorithms: t_order_inline: type: INLINE # 使用内联表达式的算法类型 props: algorithm-expression: t_order${order_id % 2} key-generators: snowflake: type: SNOWFLAKE # SnowFlake全局唯一ID生成器 ``` 这段配置指定了两个名为`ds_0`和`ds_1`的数据源,并设置了订单表`t_order`的具体分片规则,包括如何根据`order_id`列计算目标库表的位置[^4]。 #### 启动类注解 确保应用程序入口处有@EnableTransactionManagement启用声明式事务管理和@MapperScan扫描MyBatis映射器接口所在的包路径: ```java @SpringBootApplication @EnableTransactionManagement @MapperScan(basePackages = "com.example.mapper") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 以上步骤完成后,重启应用即可让其具备基本的读写分离能力并按设定好的规则执行SQL语句路由操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值