簡體   English   中英

JPA和PostgreSQL

[英]JPA and PostgreSQL

我正在使用JPA的EclipseLink實現來與PostgreSQL數據庫進行通信的項目。 我有一個任務,PostgreSQL NOTIFY / LISTEN似乎是一個完美的契合。 不幸的是,我是一個JPA新手,我正在努力弄清楚如何讓它工作。 所以我想我真的有兩個問題; 回答任何一個都會讓我開心。

1)對於掌握與數據庫的直接JDBC連接,最好的方法是什么? (我真誠希望將證明它是org.postgresql.PGConnection類型。)

要么

2)通過EclipseLink JPA模擬/訪問org.postgresql.PGConnection.getNotifications()的最佳方式是什么?

非常感謝您的幫助。


編輯:兩個工作解決方案! 我喜歡這個網站。 如果任何人有任何關於隱藏的問題/好處的說法,那么在我發出勾選標記之前,Pascal或Balus的解決方案要比其他解決方案更好,我想聽聽。

EclipseLink wiki中回答了從EclipseLink中EntityManager獲取JDBC連接。

每個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();

您應該能夠從EntityManager.getDelegate()返回的org.eclipse.persistence.internal.jpa.EntityManagerImpl中獲取它:

java.sql.Connection conn = ((EntityManagerImpl)(em.getDelegate())).getServerSession().getAccessor().getConnection();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM