Java 在Hibernate/JPA中,我应该在哪里和在哪个用例中使用SessionFactory和Session

Java 在Hibernate/JPA中,我应该在哪里和在哪个用例中使用SessionFactory和Session,java,spring-boot,hibernate,jpa,Java,Spring Boot,Hibernate,Jpa,我正在学习Hibernate和JPA,我知道它们之间的区别。在探索github的代码时,我查看了一些项目。但是我没有找到Session/SessionFactory的用法(我也读过EntityManagerFactory)。这些项目正在使用JPARepository。会话/会话工厂的目的是什么。它是否已经在JPA/Hibernate最新版本中自动处理 请指导我。Hibernate是JPA规范的一个实现,它早于JPA定义的接口,因此它有自己的API可以与之交互。除此之外,Hibernate还通过其

我正在学习Hibernate和JPA,我知道它们之间的区别。在探索github的代码时,我查看了一些项目。但是我没有找到Session/SessionFactory的用法(我也读过EntityManagerFactory)。这些项目正在使用JPARepository。会话/会话工厂的目的是什么。它是否已经在JPA/Hibernate最新版本中自动处理


请指导我。Hibernate是JPA规范的一个实现,它早于JPA定义的接口,因此它有自己的API可以与之交互。除此之外,Hibernate还通过其API提供了JPA没有指定的更多特性

通常,如果需要一些特定于Hibernate的功能,只需针对
EntityManager
/
EntityManager工厂
接口编程,并使用
unwrap()
访问
会话
/
会话工厂
。这就是为什么很少看到使用
Session
/
SessionFactory
的原因。这样做的一个主要原因是为了提高可移植性。我认为在JPA提供商之间切换是不合理的,就像在数据库之间切换通常是不合理的一样。如果您想充分利用您的系统,您将在某个时候使用您使用的项目/产品的专有功能,这很好。使用JPAAPI的另一个很好的原因是,有很多学习材料,因为它适用于所有符合JPA的实现。由于JPA有一个规范文档,如果您想知道某些东西应该如何工作,也可以阅读该文档。尽管Hibernate也有一个参考文档,但它可能没有JPA规范在每个方面都详细