JPA是一个Java编程语言接口规范,Hibernate ORM是JPA规范的一个实现。
 
Spring Data JPA能干什么

在开始之前,先举个简单的例子.

一张表user有三个字段,id、name和age,要查找指定姓氏在某年龄以上的user,在传统的spring+hibernate中,dao层我们是这样写的:

UserDao:

  1. public interface UserDao{
  2. List<User> findByNameLikeAndAgeGreaterThan(String firstName,Integer age);
  3. }

UserDaoImpl(已经是相对简单的HibernateTemplate方式了):

  1. public class UserDaoImpl implements UserDao{
  2. @Override
  3. public List<User> findByFirstNameAndAge(String firstName, Integer age) {
  4. //具体hql查找:"from User where name like '%'"+firstName + "and age > " + age;
  5. return hibernateTemplateMysql.execute(new HibernateCallback() {
  6. @Override
  7. public Object doInHibernate(Session session) throws HibernateException {
  8. String hql = "from User where name like '?' and age > ?";
  9. Query query = session.createQuery(hql);
  10. query.setParameter(0, firstName+"");
  11. query.setParameter(1, age);
  12. return query.uniqueResult();
  13. }
  14. });
  15. }
  16. }

然而,如果我们用Spring Data JPA呢:

  1. public interface UserDao extends JpaRepository<User, Serializable>{
  2. List<User> findByNameLikeAndAgeGreaterThan(String firstName,Integer age);
  3. }

对,就这样,已经没有了,连实现都不需要写的!service直接调用UserDao.findByNameLikeAndAgeGreaterThan(firstName+"%",age)即可。

所以,spring data jpa可以极大的简化JPA的写法,可以在几乎不用写具体代码的情况下,实现对数据的访问和操作。除了CRUD外,还包括如分页、排序等一些常用的功能。
 
Spring Data JPA有什么
主要来看看Spring Data JPA提供的接口,也是Spring Data JPA的核心概念:
1:Repository:最顶层的接口,是一个空的接口,目的是为了统一所有Repository的类型,且能让组件扫描的时候自动识别。
2:CrudRepository :是Repository的子接口,提供CRUD的功能
3:PagingAndSortingRepository:是CrudRepository的子接口,添加分页和排序的功能
4:JpaRepository:是PagingAndSortingRepository的子接口,增加了一些实用的功能,比如:批量操作等。
5:JpaSpecificationExecutor:用来做负责查询的接口
6:Specification:是Spring Data JPA提供的一个查询规范,要做复杂的查询,只需围绕这个规范来设置查询条件即可
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jewelry008/article/details/76359516

最新文章

  1. 词频统计_输入到文件_update
  2. Metasploit自动攻击和选择模块攻击详解
  3. python:Xml
  4. webstorm &amp; phpstorm破解
  5. Android手机令牌教程
  6. USB联机线编程接口(API)
  7. Django之admin
  8. Sublime text 3编辑python时出现方框的解决办法
  9. Entity Framework 乐观并发处理
  10. 07_mysql常用sql语句
  11. linux安装mysql图文教程
  12. react实现tab切换效果
  13. ssl-openssl简介
  14. @Resource无法import相关
  15. idea 和eclipse的debug调试快捷键对比
  16. [总结]其他杂项数学相关(定理&amp;证明&amp;板子)
  17. spring事物要知道
  18. Scripting.FileSystemObject对象的详细技巧指南
  19. Android逆向进阶——让你自由自在脱壳的热身运动(dex篇)
  20. 【多视图几何】TUM 课程 第6章 多视图重建

热门文章

  1. 计算 24 点是一种扑克牌益智游戏,随机抽出 4 张扑克牌,通过加 (+) ,减 (-) ,乘 ( * ), 除 (/) 四种运算法则计算得到整数 24 ,本问题中,扑克牌通过如下字符或者字符串表示,其中,小写 joker 表示小王,大写 JOKER 表示大王:
  2. memcached 经常使用命令最全总结大全
  3. 第一百七十四节,jQuery,Ajax进阶
  4. Prime pair connection (Project Euler 134)
  5. 【matlab】View视点函数
  6. poj 2516(拆点+最小权匹配)
  7. 第一章----python简介
  8. Laragon集成开发环境+配置Xdebug+postman运行Xdebug
  9. awk特征相同行的合并
  10. Atitit.软件仪表盘(4)--db数据库子系统-监測