我正在从事一个使用 JPA 的 EclipseLink 实现与 PostgreSQL 数据库对话的项目。我有一个 PostgreSQL NOTIFY/LISTEN 似乎非常适合的任务。不幸的是,我是一个 JPA 新手,并且正在努力弄清楚如何让它工作。所以我想我真的有两个问题;回答任何一个都会让我开心。
1) 获得与数据库的直接 JDBC 连接的最佳方法是什么? (我真诚地希望证明它是 org.postgresql.PGConnection
类型。)
或
2) 我通过 EclipseLink JPA 模拟/访问 org.postgresql.PGConnection.getNotifications()
的最佳方式是什么?
非常感谢您的帮助。
编辑: 两个可行的解决方案!我喜欢这个网站。在我给出复选标记之前,如果有人对隐藏的陷阱/好处有任何看法,这些问题会使 Pascal 或 Balus 的解决方案比另一个更好,我想听听。
最佳答案
在 EclipseLink 中从 EntityManager
获取 JDBC 连接在 EclipseLink wiki 中得到了回答。 .
方法因 JPA API 版本而异。这是 wiki 的摘录:
JPA 2.0
entityManager.getTransaction().begin();
java.sql.Connection connection = entityManager.unwrap(java.sql.Connection.class);
...
entityManager.getTransaction().commit();
JPA 1.0
entityManager.getTransaction().begin();
UnitOfWorkImpl unitOfWork = (UnitOfWorkImpl)((JpaEntityManager)entityManager.getDelegate()).getActiveSession();
unitOfWork.beginEarlyTransaction();
java.sql.Connection connection = unitOfWork.getAccessor().getConnection();
...
entityManager.getTransaction().commit();
关于java - JPA 和 PostgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2067783/