Понимание JTA с Hibernate - PullRequest
       13

Понимание JTA с Hibernate

0 голосов
/ 22 января 2019

Я пытаюсь понять роль JTA в следующем контексте:

Приложение Java EE использует следующий код для сохранения объекта EJB в базе данных:

@TransactionAttribute(TransactionAttributeType.REQUIRED)
    public T makePersistent(final T entity) {
        getEntityManager().persist(entity);
        return entity;
    }

файл persistence.xml:

<persistence-unit name="EXAMPLE">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>jboss/datasources/example-ds</jta-data-source>
    <properties>
      <property name="hibernate.default_schema" value=EXAMPLE_DB" />
      <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
      <property name="hibernate.format_sql" value="true" />
    </properties>
  </persistence-unit>

Копая глубже в SessionImpl Hibernate, я нашел следующий фрагмент:

private void firePersist(PersistEvent event) {
    errorIfClosed();
    checkTransactionSynchStatus();
    checkNoUnresolvedActionsBeforeOperation();
    for ( PersistEventListener listener : listeners( EventType.PERSIST ) ) {
        listener.onPersist( event );
    }
    checkNoUnresolvedActionsAfterOperation();
}

Вот первый вызов метода JTA.

Объект боба выглядит так:

@Entity
@Table(name = "Example_Table")
public class ExampleObj implements Serializable {
...

Итак, мой вопрос:

Необходимо ли внедрять JTA для Hibernate JDBC и каковы могут быть преимущества использования JTA?

...