spring data jpa是什麼?

JPA是一個Java編程語言接口規範,Hibernate ORM是JPA規範的一個實現。
 
Spring Data JPA能幹什麼
[java]  view plain  copy
 
  1.   

在開始以前,先舉個簡單的例子.html

    一張表user有三個字段,id、name和age,要查找指定姓氏在某年齡以上的user,在傳統的spring+hibernate中,dao層咱們是這樣寫的:java

    UserDao:spring

 

[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)便可。sql

 

因此,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提供的一個查詢規範,要作複雜的查詢,只需圍繞這個規範來設置查詢條件便可
相關文章
相關標籤/搜索