JavaEE容器管理事务

JavaEE容器管理事务,java,hibernate,jakarta-ee,transactions,javabeans,Java,Hibernate,Jakarta Ee,Transactions,Javabeans,我可以在这里请求你的帮助吗。我对容器管理的事务如何在后台工作的了解是有限的,事实上我不知道。我已经研究了其他几个与此类似的问题,其中大多数都是关于Spring的,我没有使用Spring框架,我无法找到解决方案,所以我决定问 我正在尝试在不使用begin()和commit()等显式编写事务代码的情况下实现一个简单的持久性。我正在使用Hibernate的JPA实现,我使用的应用服务器是“WildFly version 10.1 Final”。我的persistence.xml如下所示: <?

我可以在这里请求你的帮助吗。我对容器管理的事务如何在后台工作的了解是有限的,事实上我不知道。我已经研究了其他几个与此类似的问题,其中大多数都是关于Spring的,我没有使用Spring框架,我无法找到解决方案,所以我决定问

我正在尝试在不使用
begin()
commit()
等显式编写事务代码的情况下实现一个简单的持久性。我正在使用Hibernate的JPA实现,我使用的应用服务器是“WildFly version 10.1 Final”。我的
persistence.xml
如下所示:

 <?xml version="1.0" encoding="UTF-8"?>

    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
       http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
        version="1.0">

        <persistence-unit name="PostgresUnit" transaction-type="JTA">
            <class>beans.entity.Customer</class>
            <properties>
                <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
                <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/mydb" />
                <property name="javax.persistence.jdbc.user" value="postgres" />
                <property name="javax.persistence.jdbc.password" value="password" />
                <property name="hiberate.flushMode" value="FLUSH_AUTO" />
                <property name="hibernate.hbm2ddl.auto" value="update" />
            </properties>

        </persistence-unit>

    </persistence>
我有一个会话bean
CustomerService

@Local
public interface CustomerService {
  void addCustomer( final Customer customer );
}

@Stateless
@TransactionManagement ( TransactionManagementType.CONTAINER )
public class CustomerServiceImpl implements CustomerService {

  @Inject
  private CustomerResource customerResource; // Injection point using CDI

  @Override
  public void addCustomer( final Customer customer ) {
    customerResource.addCustomer( customer );
  }
}
CustomerResource
如下所示:

@Local
public interface CustomerResource {
  void addCustomer( Customer customer );
}

@ManagedBean // javax.annotation.ManagedBean...
public class CustomerResourceImpl implements CustomerResource {

  @PersistenceContext ( unitName = "PostgresUnit" )
  private EntityManager entityManager;

  @Override
  @TransactionAttribute ( TransactionAttributeType.REQUIRED )
  public void addCustomer( Customer customer ) {
    entityManager.persist( customer );
    entityManager.flush();
  }
}
当我部署我的应用程序时,我的
war
部署成功所有依赖项都被注入,我通过一个简单的JSP视图添加了一个客户,就像我一直在使用
RESOURCE\u LOCAL
事务类型(当一切正常工作时)一样。现在代码运行,但什么也没有发生。我没有得到任何例外,或者无论如何,客户不会持久化到客户表。好像交易根本就没有发生。我错过了什么

@Local
public interface CustomerResource {
  void addCustomer( Customer customer );
}

@ManagedBean // javax.annotation.ManagedBean...
public class CustomerResourceImpl implements CustomerResource {

  @PersistenceContext ( unitName = "PostgresUnit" )
  private EntityManager entityManager;

  @Override
  @TransactionAttribute ( TransactionAttributeType.REQUIRED )
  public void addCustomer( Customer customer ) {
    entityManager.persist( customer );
    entityManager.flush();
  }
}