R2DBC笔记

  <dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-r2dbc</artifactId>
    <version>1.1.9.RELEASE</version>
  </dependency>
  • 实体类id 注解 : 不是 javax.persistence.Id ,而是 org.springframework.data.annotation.Id

  • JPA 中的关系映射,如 @ManyToOne @OneToMany等,在R2DBC中不支持,所以遇到有关联的时候,需要我们自己处理

  • 不支持 类似的JPA 中的Specifications分页查询 ,使用 Specifications 来查询分页内容,但是 R2DBC支持 Pageable分页查询,比JPA稍微麻烦一些

  • 启用 Auditing: @EnableR2dbcAuditing

  • 数据库连接:

spring.r2dbc.url=r2dbc:postgresql://10.103.21.143:5450/数据库名?schema=schema名
spring.r2dbc.username=
spring.r2dbc.passweord=
spring.r2dbc.pool.enabled=true
spring.r2dbc.pool.initial-size=1
spring.r2dbc.pool.max-size=5
spring.r2dbc.pool.min-idle=1
spring.r2dbc.pool.max-idle-time=30m
spring.r2dbc.pool.max-life-time=60000
spring.r2dbc.pool.validation-query=SELECT 1
  • 多线程同时修改数据库同一条数据, 乐观锁version 失败,需要重试( 是整个逻辑从头再来,不是重新保存数据 ):
     // 定义重试策略
        RetryBackoffSpec retrySpec = Retry
                .backoff(3, Duration.ofMillis(100))
                .maxBackoff(java.time.Duration.ofSeconds(5))
                .jitter(0.5);

      // 在Mono上应用重试策略
        Mono<String> retryMono = mono.retryWhen(retrySpec).doOnError(e->
         {

           log.error("retry 3 times fail {}",e.getMasseage());
              //重试失败后的逻辑
         }
);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容