随记Spring Data JPA的几个坑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了随记Spring Data JPA的几个坑相关的知识,希望对你有一定的参考价值。

参考技术A No.1:之前项目中hibernate对Integer参数注入String类型值进行模糊查询,并不会抛出异常。最近接触Spring Data JPA在写demo的过程中发现JPA对Integer的模糊查询支持比较差,无论是简单查询还是复杂查询均不支持。
注:equal无影响,仍可使用String参数注入
No.2:自定义接口方法中,属性有几个,则参数要有几个。
注意:多了也不行
No.3:查看JpaRepository具体实现类可发现在repository层已加事务,但是如何在service层控制事务?:

简单查询(zipCode是Integer类型):

复杂查询(假设sex也是zipCode):

mysql:

两个属性,一个参数

两个属性,两个参数

正常操作结果会导致数据不回滚,正常插入

增加@Transactional,则数据回滚

1.虽然说正常情况下Integer是不应该模糊查询的,但是也许就有用到。当使用JPA开发项目时,可能需要模糊查询的字段,尽量用String。

Spring Data JPA 工作实践

最近我们为了规范JPA(Java Persistence API)层的架构,决定用 spring data jpa 替换 mybatis。同样的业务逻辑,在替换过程中遇到了一些设计方面的问题,解决问题的过程中,加深了对不同架构实现方式的思考,也引入了新的解决方案。

印象深刻的几方面:

  1. 针对复杂继承关系,如何通过 spring data jpa 实现
  2. 如何通过 spring data jpa 添加锁
  3. mybatis 转 spring data jpa 测试需要做的相关调整,保证两种实现方式共生
  4. 复杂的表关联 @ManyToOne @OneToOne 注解的使用
  5. 如何解决 n+1 性能问题
  6. 如何进行 repository 到 dto 层的数据简单转化
  7. 复杂 entity 内部的数据类型转换方式
  8. hibernate常见坑,传递有标识数据,并不是复制而是剪切/无save但是默认持久化/性能问题

参考资料:
官网有一些简单的概念,不足以实践,可以参考baeldung 有很详细的资料和demo。

以上是关于随记Spring Data JPA的几个坑的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 学习随记

随记-2020 Spring Festival

jointJS初使用随记

web 学习随记

Android随记

vue随记