powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Создание entityManager в JTA-режиме
3 сообщений из 3, страница 1 из 1
Создание entityManager в JTA-режиме
    #39381709
Pavlo7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем! Пишу рест-сервис, который хостится на jboss (WildFly). То есть использую JTA-режим. На сервере прописаны 2 датасоурса к двум разным БД (postgres), которые мой сервис использует при работе. Либо в одну базу лезу, либо в другую, это должно определяться в рантайме, к примеру - параметром в запросе. Или конфигом на сервере, не важно, главное в рантайме. Теперь вопрос.
Как правильно создать подключение (entityManager) из приложения?

Вариант с аннотацией @PersistenceContext(unitName = "...", type = PersistenceContextType.EXTENDED)
не нравится, т.к. unitName хардкодится, а я хочу имя соурса подставлять в рантайме. Либо надо иметь 2 разных entityManager в приложении, тоже некрасиво.

Нашел в сети вариант http://stackoverflow.com/questions/5104185/how-to-inject-persistence-context-to-different-data-source-programmatically (второй ответ). Объявляю два persistence-unit с разными именами, потом в рантайме вызываю фабрику с именем нужного соурса:
EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnitName1);
EntityManager em = emf.createEntityManager();
Это действительно работает.

Однако на некоторых сайтах ( http://tomee.apache.org/jpa-concepts.html) вижу, что этого типа не может быть в режиме JTA:
"You cannot use the EntityManagerFactory to get an EntityManager.
You can only get an EntityManager supplied by the container."
или это не правильно в принципе так делать и я поимею каких-то проблем?
...
Рейтинг: 0 / 0
Создание entityManager в JTA-режиме
    #39381741
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavlo7,

Может там просто инфа старая?
http://docs.oracle.com/javaee/7/api/javax/persistence/EntityManagerFactory.html#createEntityManager-javax.persistence.SynchronizationType-
Вот новый метод от версии 2.1 - создаёт EM в JTA транзакции.
...
Рейтинг: 0 / 0
Создание entityManager в JTA-режиме
    #39382042
Pavlo7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм, ну возможно. Если создание EM через фабрику в JTA тоже легальный способ, то в чем отличие от создания через аннотацию @PersistenceContext ? И, что реально происходит при создании фабрики? (создается соединение или выделяется из пула WF или еще что?)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Создание entityManager в JTA-режиме
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]