Spring Data JPA是Spring Data项目中的一个子项目,该子项目依赖于另外一个基础子项目Spring Data Commons。
首先谈一下Spring Data JPA是什么,简单的说,Spring Data JPA是Spring基于ORM框架、JPA规范的基础上封装的一套JPA应用框架,该框架有如下几个优点:
1、提供统一的接口,可避免我们再次重复编写基础的DAO类;
Spring Data JPA提供了几个基础的接口类,分别为CrudRepository、PagingAndSortingRepository、 Repository,其中,CrudRepository提供了基础的增删查改方法,PagingAndSortingRepository则在CrudRepository的基础上提供了对数据查询的分页支持,Repository建立在PagingAndSortingRepository的基础上,提供了完善的接口方法。
以先展示了CrudRepository提供的的接口方法:
public interface CrudRepository<T, ID extends Serializable>
extends Repository<T, ID> {
T save(T entity);
T findOne(ID primaryKey);
Iterable<T> findAll();
Long count();
void delete(T entity);
boolean exists(ID primaryKey);
// … more functionality omitted.
}
2、遵循JPA规范,同时也提供了灵活的数据访问方式;
Spring Data JPA能够很好的兼容目前JPA2.0规范,在定义Entity类的时候,可以在类中定义标准的@NamedQuery查询,也可以在Spring Data JPA的Repository类的方法中定义@Query查询。
标准的JPA对@NamedQuery定义如下:
@Entity
@NamedQuery(name="Country.findAll", query="SELECT c FROM Country c")
public class Country {
...
}
Spring Data JPA对@Query定义如下:
public interface CountryRepository extends JpaRepository<Country, Long> {
@Query("SELECT c FROM Country c")
Country findAll();
}
通过以上定义,在Entity中即可省略掉@NamedQuery定义,让Entity类看起来更清爽。
3、通过方法名即可自动生成HQL语句;
如果你使用过Spring Data JPA,那么一定会对其提供的方法名自动转换为HQL感到十分有意思,这也是Spring Data JPA让人觉得很方便的地方,下面给两个转换规则的例子:
Keyword | Sample | JPQL snippet
And | findByLastnameAndFirstname |… where x.lastname = ?1 and x.firstname = ?2
Or | findByLastnameOrFirstname |… where x.lastname = ?1 or x.firstname = ?2
具体转换规则可参考官方文档。
4、通过接口自动注入实现类,实现非常简单。
我们只需要定义一个类似DAO的接口类,并继承Spring Data JPA提供的Repository接口类,一切就大功告成了,不需要编写任何一行代码,你的DAO接口类就具备了增删查改、分页、记录数统计等功能,对的,一切就那么简单!
以上是本人对Spring Data JPA使用上的一些感受,如果读者对其很感兴趣,可进一步阅读:
分享到:
相关推荐
Spring Data JPA API。 Spring Data JPA 开发文档。 官网 Spring Data JPA API。
Spring Data JPA中文文档1.4.3
'SpringDataJPA从入门到精通'以SpringBoot为技术基础 从入门到精通 由浅入深地介绍SpringDataJPA的使用。有语法 有实践 有原理剖析。'SpringDataJPA从入门到精通'分为12章 内容包括整体认识JPA、JPA基础查询方法、...
spring注解完整版+spring data jpa官方文档中文翻译+JPA2.0官方文档 文档内容齐全 值得参考学习
使用 SpringBoot + SpringDataJPa 设计通用的权限管理系统,适合管理系统快速开发迭代,可用于开发模板,项目经过测试,可完美运行! 使用 SpringBoot + SpringDataJPa 设计通用的权限管理系统,适合管理系统快速...
声明:该应用仅仅是技术研究:Spring Data JPA的配置和常见api的使用&maven构建项目,其他技术不在此研究 内涵sql和各种Spring Data JPA测试和案例,导入&创建DB,配置好maven便可运行 maven构建项目&问题:...
spring data jpa最新版本1.8.0,包含了spring-data-jpa-1.8.0.RELEASE.jar,spring-data-jpa-1.8.0.RELEASE-javadoc.jar以及 spring-data-jpa-1.8.0.RELEASE-sources.jar文档和源代码
仓库管理系统,SpringBoot+Spring Data JPA.zip仓库管理系统,SpringBoot+Spring Data JPA.zip仓库管理系统,SpringBoot+Spring Data JPA.zip仓库管理系统,SpringBoot+Spring Data JPA.zip仓库管理系统,SpringBoot...
5-Spring-Boot(五):spring data jpa的使用.docx5-Spring-Boot(五):spring data jpa的使用.docx5-Spring-Boot(五):spring data jpa的使用.docx5-Spring-Boot(五):spring data jpa的使用.docx5-Spring-Boot(五):...
第一章:Spring Data JPA入门 包括:是什么、能干什么、有什么、HelloWorld等 第二章:JpaRepository基本功能 包括:代码示例JpaRepository提供的CRUD功能,还有翻页、排序等功能 第三章:JpaRepository的查询 ...
NULL 博文链接:https://mixo44.iteye.com/blog/1797079
Spring Data JPA中文文档[1.4.3].zip
Spring Data JPA是Spring基于Hibernate开发的一个JPA框架。如果用过Hibernate或者MyBatis的话,就会知道对象关系映射(ORM)框架有多么方便。但是Spring Data JPA框架功能更进一步,为我们做了 一个数据持久层框架...
Spring Data JPA Demo
3. 与Spring全家桶结合紧密: 4. 成熟的框架和架构 常⻅的SQL性能问题,如何优雅处理? 2. 错综复杂的关联关系如何应对? 3. 万恶的LazyException本质是什么? 4. ⾼并发⾼性能要求的API服务要⽤JPA吗?
Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA
该案例使用SpringBoot 整合了SPringData JPA,使用SpringData 开发简化了Dao层的开发量,简化了数据访问,使得持久化更加简单 !
基于SpringBoot+Spring Data JPA+mybatis的仓库管理系统 基于SpringBoot+Spring Data JPA+mybatis的仓库管理系统 基于SpringBoot+Spring Data JPA+mybatis的仓库管理系统 基于SpringBoot+Spring Data JPA+mybatis的...
Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封 装的一套 JPA 应用框架,可使开发者用极简的代码即可实现对数据库 的访问和操作。...学习并使用 Spring Data JPA 可以极大提高开发效率!