【问题标题】:How Spring Data JPA provide Data Access Interface instead of hibernate Data Access LayerSpring Data JPA 如何提供数据访问接口而不是休眠数据访问层
【发布时间】:2018-03-14 11:47:42
【问题描述】:

当我探索 hibernate JPA 实现时,我产生了使用 hibernate 并创建数据访问层以在数据库中获取和插入数据的想法。现在我在我的项目中使用 spring + spring data JPA + Hibernate 进行一些 CRUD 操作。我想到了 data JPA 的角色,用于为数据库访问而不是 hibernate DAO 提供 CRUD 存储库。我像这样使用我的 CRUD 存储库,

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 实现通信的核心概念吗?

【问题讨论】:

  • 任何人都可以指导以适当的方式解决我的困惑。如果有任何重要的文件也提供给我更多的探索。

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


【解决方案1】:

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

CrudRepository 的方法在SimpleJpaRepository 中实现,其他方法对象是根据注解、参数和返回类型以及方法名称创建的,然后由代理调用。

有一个wiki article 介绍可能有用的基本概念。

【讨论】:

    猜你喜欢
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    相关资源
    最近更新 更多