【发布时间】: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 完成的