0

我在访问本地数据库的 netbeans 上创建了一个安静的 Web 服务。我查看了 netbeans 的示例项目,他们使用 JPA 控制器。这个问题可能是基本的,但我没有太多时间深入研究 JPA。

有人可以解释为什么需要使用 JPA 控制器吗?

另外,我阅读了上一个问题,“通过 JPA 访问数据库表与 Web 应用程序中的 EJB”,它建议使用 EJB。

再次,这是否可以解释。

公共类 CustomerJpaController 实现 Serializable {

public CustomerJpaController(UserTransaction utx, EntityManagerFactory emf) {
    this.utx = utx;
    this.emf = emf;
}
private UserTransaction utx = null;
private EntityManagerFactory emf = null;

public EntityManager getEntityManager() {
    return emf.createEntityManager();
}

public void create(Customer customer) throws PreexistingEntityException, RollbackFailureException, Exception {
    EntityManager em = null;
    try {
        utx.begin();
        em = getEntityManager();
        em.persist(customer);
        utx.commit();
    } catch (Exception ex) {
        try {
            utx.rollback();
        } catch (Exception re) {
            throw new RollbackFailureException("An error occurred attempting to roll back the transaction.", re);
        }
        if (findCustomer(customer.getCustomerId()) != null) {
            throw new PreexistingEntityException("Customer " + customer + " already exists.", ex);
        }
        throw ex;
    } finally {
        if (em != null) {
            em.close();
        }
    }
}
4

1 回答 1

0

我从未听说过“JPA 控制器”,但通常将 JPA 代码嵌入某种服务类中以处理事务。

无状态 EJB bean 非常适合这种情况。如果没有它们,您将不得不手动启动、提交和回滚事务,这很乏味、冗长且容易出错。使用 EJB,这变得微不足道,因为它们透明地为您管理事务。

于 2013-05-30T17:05:11.220 回答