【问题标题】:How does the JPA repository implementation get created如何创建 JPA 存储库实现
【发布时间】:2021-08-04 19:52:26
【问题描述】:

我试图了解 JPA 存储库中发生了什么,而不是将其视为黑匣子。 假设我有一个扩展 JPA 存储库的接口。

@Repository
public interface TeamRepository extends JpaRepository<Team, Long> {
}

据我所知,JPA 只是一个规范,我们所做的是选择一个符合它的提供程序,我通常使用 Hibernate。 据我了解,hibernate 实际上提供了 JpaRepository 的实现。 1.我尝试查看hibernate源代码,通过grepping的“findAll”方法以找到一个实现类,但它仅用于通过SessionFactory的单元测试。虽然所有这些都帮助我对内部工作有所了解,但我仍然没有找到具体的实现,我开始认为我错过了一些东西。 2. 我尝试查看目标文件夹,但没有生成源。

实现是如何创建的,Hibernate 中是否有具体的实现,我觉得我已经简化了这个概念,而且它要复杂得多。
如果是这种情况,我可以在使用 JPA 存储库的应用程序中找到它以非字节码形式实现吗?

【问题讨论】:

  • 这真的不是 Hibernate 做的,它完全是 Spring 的特性。具体来说,它是由spring-data-jpa 完成的

标签: java spring hibernate jpa


【解决方案1】:

如果您检查 JpaRepository 的导入语句

extends JpaRepository<Team, Long> {

我想你会发现你正在使用 Spring Data ...如果是这种情况,这就是提供你正在寻找的 Repository 实现的原因。

【讨论】:

  • 具体来说,OP 正在寻找JpaRepositoryFactory
猜你喜欢
  • 2022-01-19
  • 2019-04-21
  • 1970-01-01
  • 2015-02-13
  • 2016-12-30
  • 2012-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多