码迷,mamicode.com
首页 > 编程语言 > 详细

Spring Data JPA 介绍

时间:2018-07-07 23:58:08      阅读:324      评论:0      收藏:0      [点我收藏+]

标签:repos   count   没有   public   OLE   实体类   快捷   复杂   项目   

Spring Data是SpringSource基金会下的一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得数据库的访问变得方便快捷,并支持map-reduce框架和云计算数据服务。对于拥有海量数据的项目,可以用Spring Data来简化项目的开发。 

然而针对不同的数据储存访问使用相对的类库来操作访问。Spring Data中已经为我们提供了很多业务中常用的一些接口和实现类来帮我们快速构建项目,比如分页、排序、DAO一些常用的操作。

 

核心模块

为什么说Spring Data能帮助我们快速构建项目呢,因为Spring Data已经在数据库访问层上帮我们实现了公用功能了,而我们只需写一个接口去继承Spring Data提供给我们接口,便可实现对数据库的访问及操作。

 

1 核心接口Repository:

public interface Repository<T, ID extends Serializable> {  
  
}

 

这个接口只是一个空的接口,目的是为了统一所有Repository的类型,其接口类型使用了泛型,泛型参数中T代表实体类型,ID则是实体中id的类型。

 

2 直接子接口CrudRepository:提供增删改查方法

public interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> {  
  
    <S extends T> S save(S entity);  
  
    <S extends T> Iterable<S> save(Iterable<S> entities);  
  
    T findOne(ID id);  
  
    boolean exists(ID id);  
  
    Iterable<T> findAll();  
  
    Iterable<T> findAll(Iterable<ID> ids);  
  
    long count();  
  
    void delete(ID id);  
  
    void delete(T entity);  
  
    void delete(Iterable<? extends T> entities);  
  
    void deleteAll();  
}

 

3 分页排序接口PagingAndSortingRepository: 排序和分页方法

public interface PagingAndSortingRepository<T, ID extends Serializable> extends CrudRepository<T, ID> {  
      
        Iterable<T> findAll(Sort sort);  
      
        Page<T> findAll(Pageable pageable);  
    }  

4 JpaRepository接口:

 

 public interface JpaRepository<T, ID extends Serializable> extends PagingAndSortingRepository<T, ID> {  
      
        List<T> findAll();  
      
        List<T> findAll(Sort sort);  
      
        <S extends T> List<S> save(Iterable<S> entities);  
        void flush();  
      
        T saveAndFlush(T entity);  
      
        void deleteInBatch(Iterable<T> entities);  
      
        void deleteAllInBatch();  
}

 

5 复杂的接口JpaSpecificationExecutor:并没有继承上面的接口,是单独一个接口

 

 public interface JpaSpecificationExecutor<T> {  
      
        T findOne(Specification<T> spec);  
      
        List<T> findAll(Specification<T> spec);  
      
        Page<T> findAll(Specification<T> spec, Pageable pageable);  
      
        List<T> findAll(Specification<T> spec, Sort sort);  
      
        long count(Specification<T> spec);  
    }  

 

Spring Data JPA为什么只需定义接口就可以使用,其实这也不难发现,查看源码,可以找到针对JpaRepository和JpaSpecificationExecutor有一个实现类,SimpleJpaRepository.class,这个类实现了刚才所提的两个接口。而Spring在给我们注入实现类的时候,就正是这个SimpleJpaRepository.class

 

参考网址:

http://www.cnblogs.com/simazilin/p/5645947.html

http://www.cnblogs.com/simazilin/p/5645943.html

 

Spring Data JPA 介绍

标签:repos   count   没有   public   OLE   实体类   快捷   复杂   项目   

原文地址:https://www.cnblogs.com/kxm87/p/9278834.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!