spring data jpa是什么?

JPA是一个Java编程语言接口规范,Hibernate ORM是JPA规范的一个实现。
 
Spring Data JPA能干什么
[java] view plain copy
 
  1.   

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

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

    UserDao:

 

[java] view plain copy
 
  1. public interface UserDao{  
  2.     List<User> findByNameLikeAndAgeGreaterThan(String firstName,Integer age);  
  3. }  


    UserDaoImpl(已经是相对简单的HibernateTemplate方式了):
[java] view plain copy
 
  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呢:
[java] view plain copy
 
  1.   
[java] view plain copy
 
  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
posted @ 2018-04-19 10:07  无天666  阅读(420)  评论(0)    收藏  举报