Внедрение EntityManager с использованием @PersistenceContext - PullRequest
0 голосов
/ 28 марта 2019

В настоящее время мы используем проблемную настройку нашего EntityManager, как показано ниже.Мы хотели бы изменить значение с @PersistenceUnit на @PersistenceContext для менеджера сущностей.Как мы можем использовать тот же @Inject механизм?

persistence.xml:

<persistence-unit name="my-data-source" transaction-type="JTA">
    <jta-data-source>java:/foo/model</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
        <property name="hibernate.show_sql" value="${hibernate.show_sql:false}"/>
        <property name="hibernate.format_sql" value="true" />
        <property name="hibernate.use_sql_comments" value="true" />
        <property name="hibernate.order_inserts" value="true" />
        <property name="hibernate.order_updates" value="true" />
        <property name="hibernate.jdbc.batch_versioned_data" value="true" />
        <property name="hibernate.jdbc.batch_size" value="30" />
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL57InnoDBDialect" />
    </properties>
</persistence-unit>

Вот так мы получаем менеджера сущностей:

@Stateless
public class EntityManagerProvider {

    @PersistenceUnit(unitName = "my-data-source")
    private EntityManagerFactory emFactory;

    @Produces
    @Default
    public EntityManager getDefaultEntityManager() {
        return emFactory.createEntityManager();
    }

}

И в приложении мы вводим менеджер сущностей следующим образом:

@Inject
private EntityManager entityManager;

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Ваш код похож на приведенный ниже:

@PersistenceContext
private EntityManager entityManager;

Здесь указаны следующие значения импорта:

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

Для получения дополнительной информации, проверьте этот ответ

1 голос
/ 28 марта 2019

Я думаю, что вы можете просто назвать его так, конечно, без вызова EntityManagerFactory:

@PersistenceContext
EntityManager em;

В этом случае контейнер будет обрабатывать жизненный цикл компонента управления данными, поэтому вам не нужновызвать EntityManagerFactroy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...