Spring学习——关于Spring jpa data遇到的坑
2017-09-26 16:53
190 查看
最近实训项目用JavaEE写后台,感觉Spring已经很强大了。在以前用过一段时间 的Sping的JdbcTemplate做数据访问层接口,但总感觉封装得不够好,用起来感觉就像是简单地把jdbc用面向对象封装了一层,用起来很不顺手,于是就转到了Spring jpa data上来了,这次项目,数据访问层的底层主要用Hibernate,然后用Spring jpa去封装Hibernate,开始用起来还是很舒服的,Spring jpa data用接口的方法命名来提供对数据库的操作逻辑,并且Spring
jpa data实现了类似于MyBatis的动态代理,但在封装上比MyBatis更深入一层,Spring jpa data不需要写接口实现,也不需要写任何关于sql操作代码,仅仅通过接口的方法命名就可以实现操作逻辑,这是很令人兴奋的,比如想根据用户名来查询一个用户对象,就可以给命名为findByUsername(String username)。但后来遇到了一个大坑,这也是这篇blog的要说明的问题,就是在类似于findByUsername这种接口方法命名的时候,如果把实体类的属性名用下划线的话,Spring
jpa data将不能识别,比如命名为findByUser_name,这样,Spring jpa data是会把这个方法名解析成通过user属性来查询一个用户对象,所以大家在用Spring jpa data的时候一定要注意,如果到项目的中后期再来改属性名的话,就会很麻烦。反正这个坑点是把我坑惨了的,虽然有Intellij Idea来做全局替换,但还是出了很多问题,搞了很久才最后把项目搞好,只能说是自己当时没注意到这个坑点吧,看了这篇blog的blog友如果正准备用Spring jpa data的话,千万要注意了。
jpa data实现了类似于MyBatis的动态代理,但在封装上比MyBatis更深入一层,Spring jpa data不需要写接口实现,也不需要写任何关于sql操作代码,仅仅通过接口的方法命名就可以实现操作逻辑,这是很令人兴奋的,比如想根据用户名来查询一个用户对象,就可以给命名为findByUsername(String username)。但后来遇到了一个大坑,这也是这篇blog的要说明的问题,就是在类似于findByUsername这种接口方法命名的时候,如果把实体类的属性名用下划线的话,Spring
jpa data将不能识别,比如命名为findByUser_name,这样,Spring jpa data是会把这个方法名解析成通过user属性来查询一个用户对象,所以大家在用Spring jpa data的时候一定要注意,如果到项目的中后期再来改属性名的话,就会很麻烦。反正这个坑点是把我坑惨了的,虽然有Intellij Idea来做全局替换,但还是出了很多问题,搞了很久才最后把项目搞好,只能说是自己当时没注意到这个坑点吧,看了这篇blog的blog友如果正准备用Spring jpa data的话,千万要注意了。
相关文章推荐
- spring-data-jpa学习(一)环境配置1.3
- 关于spring-data-jpa的简单介绍
- SpringBoot学习-(4)集成SpringDataJpa
- Hello, Spring_Data_JPA! 学习笔记(一)
- 关于Spring-Data-Jpa的一些理解
- 深入学习spring-boot系列(二)--使用spring-data-jpa
- Java学习笔记13——Spring Data JPA
- jpa学习5--spring data jpa 中的JpaRepository 使用 @Query 注解
- 深入学习spring-boot系列(二)--使用spring-data-jpa
- 深入学习spring-boot系列(二)--使用spring-data-jpa
- Spring Data JPA 入门学习笔记
- Spring-data-jpa 学习笔记(二)
- springboot 学习笔记【3】Spring Boot中使用Spring-data-jpa
- 关于Spring data JPA 如何使用条件查询。
- SpringDataJPA学习记录(三)--复杂查询的封装
- SpringDataJPA学习记录(一)--环境配置
- 使用Spring Data Jpa 遇到 数据库字段以 from 开头,分页查询失败的问题
- 深入学习spring-boot系列(二)--使用spring-data-jpa
- 深入学习spring-boot系列(二)--使用spring-data-jpa
- Spring-Data-JPA学习