Spring PersistanceContext,EntityManager并使用您的数据库

时间:2019-02-24 17:14:40

标签: java database spring persistence

我一直在开发一些基本的Spring Web应用程序,并且在正确管理数据库方面遇到了很多麻烦。从现在开始,我一直在使用基本的JPA存储库,而经典的save()和findById(long id)已经为我完成了工作。但是最近我注意到,当我从数据库中获取一个对象并对其进行更改时,它并没有持久化。这使我不得不仔细研究问题标题中的所有内容。我发现的内容确实使我感到困惑,所以也许有人可以为我清除它:

  • 我注意到有些人使用Session(来自持久性)并 有些使用EntityManager。为什么?
  • 有人说您必须注入EntityManagerFactory并从那里获取EntityManager,这是真的吗?为什么?
    • 在遵循一两个指南之后,我无法正确地做到这一点,还有其他人想给我一个如何做的解释吗?
    • 我已经看到EntityManagerFactory以千种不同的方式注入(相当混乱),那是最好的吗?
  • 我看到了这个Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 这使我可以使用一个entityManager,但是我遇到了错误,对此的人说:With regards to the original question about obtaining an EntityManagerFactory in a non-spring setting. You simply call Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);,这个非弹簧设置会是什么?
  • 如果我在简单的H2数据库或mysql数据库中进行开发,是否有区别?
    • 链接到一个很好的最新教程或一本涵盖该书的推荐书,我在课堂上进行了研究,他们从没有提到有关持久性上下文和实体管理的任何内容,所以非常困惑。

1 个答案:

答案 0 :(得分:0)

有四种使用spring DAO的方法:

  • JdbcTemplate + Spring DAO支持(您将使用JdbcTemplate类)
  • Hibernate + Spring DAO支持(您将使用SessionFactory类)
  • JPA + spring DAO支持(您将使用EntityManager类)
  • JPA + Spring数据(DAO的高级抽象)

JDBC,Hibernate,JPA是独立技术。如果您将学习hibernate,则将学习如何使用SessionFactoryjpaEntityManager相同。 Spring Data是来自spring的另一种抽象,用于访问数据库。

有关spring DAO支持的更多信息,请查看文档here