JPA и PostgreSQL

Я нахожусь на проекте, который использует реализацию EclipseLink JPA, чтобы говорить с базой данных PostgreSQL. У меня есть задача, для которой PostgreSQL УВЕДОМЛЯЮТ/СЛУШАЮТ, походит на идеальное соответствие. К сожалению, я - JPA newb и изо всех сил пытаюсь выяснить, как заставить его работать. Таким образом, я предполагаю, что у меня действительно есть два вопроса; ответ на любой сделает меня счастливым.

1) Каков лучший способ для меня овладеть прямым соединением JDBC к базе данных? (Который я искренне надеюсь, окажется типа org.postgresql.PGConnection.)

ИЛИ

2) Каков лучший способ для меня эмулировать/получать доступ org.postgresql.PGConnection.getNotifications() через EclipseLink JPA?

Большое спасибо за Вашу справку.


Править: Два рабочих решения! Я люблю этот сайт. Если бы у кого-либо есть что-нибудь для высказывания о скрытых глюках/преимуществах, которые сделали бы или решение Паскаля или Balus лучше, чем другой, прежде чем я раздам галочку, я хотел бы услышать его.
5
задан BlairHippo 14 January 2010 в 22:25
поделиться

2 ответа

Получение соединения JDBC из EntityManager в EclipseLink отвечает в вики EclipseLink.

Способ отличается в зависимости от версии JPA API. Вот выдержка из вики:

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();
8
ответ дан 13 December 2019 в 22:08
поделиться

необходимо смочь получить его от org.eclipse.persistence.internal.jpa. EntityManagerImpl, который возвращается EntityManager.getDelegate () :

java.sql.Connection conn = ((EntityManagerImpl)(em.getDelegate())).getServerSession().getAccessor().getConnection();
2
ответ дан 13 December 2019 в 22:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: