在swing应用程序中管理JPA / Hibernate事务的最简单方法

时间:2017-12-20 14:14:01

标签: swing hibernate jpa

我有这个java swing应用程序,有一个线程,一个数据库连接。 每当用户保存或编辑某些内容时,都必须编写如下内容:

private void buttonClickedActionPerformed(java.awt.event.ActionEvent evt) {                                                
    EntityManager em = sessionFactory.openSession();
    EntityTransaction et = null;
    try {
        et = em.getTransaction();
        et.begin();

        // save, merge, update ...

        et.commit();
    }
    catch(PersistenceException pe) {
        if(et != null) et.rollback();
    }
    finally {
        if(em != null) em.close();
    }
}

我在一些教程中看到了对容器管理的事务的引用或类似于Web应用程序的事务。桌面怎么样?我在这里错过了什么吗?我是否真的需要每次都写下所有这些交易代码?

1 个答案:

答案 0 :(得分:0)

DAO看起来像:

public class BaseDao {

    protected EntityManager em;

    public BaseDao() {
        EntityMangerFactory emf = Persistence.createEntityMangerFactory("<your PU>");
        em = emf.createEntityMangerFactory();
    }

    public <E> E find(Class<E> clazz, Serializable id) {
        return em.find(clazz, id);
    }

    public <E> E getReference(Class<E> clazz, Serializable id) {
        return em.getReference(clazz, id);
    }

    public void persist(Object entity) {
        EntityTransaction transaction = em.getTransaction();
        transaction.begin();

        em.persist(entity);

        transaction.commit();
    }

... and any other methods of the EntityManager.