Spring Data JPA如何提供数据访问接口而不是hibernate数据访问层

时间:2017-10-03 09:57:58

标签: hibernate spring-mvc spring-data-jpa

当我探索hibernate JPA实现时,我想到了使用hibernate和创建数据访问层来获取和从数据库中插入数据。现在我在我的项目中使用spring + spring数据JPA + Hibernate进行一些CRUD操作。我知道数据JPA的角色是为数据库访问提供CRUD存储库而不是hibernate DAO。我使用了我的CRUD存储库,< / p>

package com.central.repository;
import java.util.List;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import com.central.model.*;
public interface DriverRepository extends CrudRepository<Driver, Integer> {

Driver findById(Integer id);
}

这里我从数据JPA的“CrudRepository”存储库扩展而来。当我使用这个时,数据JPA如何为我的界面提供存储库?它们是如何内置的为我提供findAll(),save()和delete()存储库方法?实际上我对数据JPA如何为我的界面提供存储库的角色有疑问?以及Data JPA如何与hibernate通信以提供这些存储库实现?。任何人都可以指导解决Data JPA与Hibernate JPA实现通信的核心概念吗?

1 个答案:

答案 0 :(得分:1)

Spring Data为接口创建了一个代理,每个方法尝试不同的策略来查找/创建方法的实现。

CrudRepository的方法在SimpleJpaRepository中实现,其他方法基于注释,参数和返回类型以及随后由代理调用的方法名称来创建对象。

关于可能有用的基本概念,有一个wiki article