【问题标题】:Convert Connection to EntityManagerFactory or EntityManager将连接转换为 EntityManagerFactory 或 EntityManager
【发布时间】:2015-01-09 16:06:36
【问题描述】:

问题:当您只有一个 java.sql.Connection 对象时,有什么方法可以获取 EntityManagerFactory 或 EntityManager 对象?

解释:我们有一个专门用于访问我们的 Oracle 数据库的项目。这几乎都是遗留代码,并且数据库的设置并不完全对 ORM 友好。我们正在尝试使任何新表和添加都使用 Eclipselink。我遇到的问题是整个项目都设置为传递连接对象。所以我不会有使用 EntityManagerFactory 访问数据库的 url、用户名或密码。

我尝试从与元数据的连接中提取信息,但我能得到的似乎只是 url 和用户名。密码似乎不存在,我假设是出于安全原因。

似乎 EntityManagerFactory 和 Connection 是非常相似的对象,所以我希望找到一种简单的方法来转换它,但只找到了 EM 到 Connection,而不是 EM(或 EMF)的连接,所以我来寻求帮助,或者至少是明确的不,这是不可能的。谢谢!

【问题讨论】:

  • 您可以使用本机 API 将连接包装在 EMF/EM 中,但在不了解持久性单元(在 persistence.xml 中定义)的情况下,您不会从中获得任何价值。您需要创建一个持久性单元(带有实体等),然后加载它以使用您的连接,但如果您使用可以作为属性传递给 JPA onpersistence.blogspot.com/2008/04/… 的连接池会更好
  • 这正是我所需要的。我没有意识到 EMF 属性有这么多选项。如果您将此作为答案,我将接受它作为答案。谢谢!

标签: database oracle connection eclipselink entitymanager


【解决方案1】:

这在 cmets 部分得到了回答。所以我想我会把它作为清晰和完整的答案发布。以防以后有人遇到这个问题。

“您可以使用本机 API 将连接包装在 EMF/EM 中,但在不了解持久性单元(在 persistence.xml 中定义)的情况下,您将无法从中获得任何价值。您需要创建一个持久性单元(带有实体等),然后加载它以使用您的连接,但如果您使用可以作为属性传递给 JPA 的连接池会更好”http://onpersistence.blogspot.com/2008/04/eclipselink-and-datasources.html

感谢 Chris(来自 cmets。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 2018-12-03
    • 2017-04-11
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多