我正在努力理解JPA,并且已经学到了不少。JPA是一个Java规范,提供者实现了这个规范。我理解这一部分。
但我不明白的是Spring Data如何介入其中。Spring Data是否也像Hibernate或OpenJPA一样是一个提供者?如果不是,它是什么?Spring Data如何“让事情变得更容易”?
我正在努力理解JPA,并且已经学到了不少。JPA是一个Java规范,提供者实现了这个规范。我理解这一部分。
但我不明白的是Spring Data如何介入其中。Spring Data是否也像Hibernate或OpenJPA一样是一个提供者?如果不是,它是什么?Spring Data如何“让事情变得更容易”?
interface CustomerRepository extends PagingAndSortingRepository<Customer, Long> {
List<Customer> findByLastnameContaining(String lastname);
}
现在只需要进行配置(以及域类映射),就可以创建此接口的实例并从客户端使用它。PagingAndSortingRepository包括基本的CRUD功能,以及像Page<Customer> findAll(Pageable pageable)(分页访问)这样的东西。如您所见,我们还支持查询派生机制,以避免为简单查询编写任何实现代码。对于更复杂的查询,我们允许手动声明(例如在方法中使用@Query)或者甚至手动实现,如果必要的话。将Spring Data视为一种支持JPA和许多其他持久性模型的方式,这种方式对您自己的代码是透明的。Spring Data使您更容易地在统一接口中操作更多类型的数据源系统。如果没有Spring Data,则每次处理额外逻辑时,您需要在代码中引入更多适配器。
spring-data JPA
不是JPA提供程序。它是一个库/框架,为我们的JPA提供程序(Hibernate/TopLink)添加了一个额外的抽象层。如果您在项目中使用Spring Data,则不需要编写大部分低级别数据访问操作,如编写SQL查询、DAO类等。
但是,您必须拥有一个JPA提供程序(Hibernate、Toplink等)才能实现spring-data-jpa。