是否有一个好的设计模式可以在单个事务中从不同的DAO执行2个方法?

时间:2015-12-16 16:57:38

标签: java hibernate design-patterns transactions

我有两个DAO,InvoiceDao和InvoiceItemDao,每个都有update方法。 这是Dao中的update方法:

public void update(E... es){
    Session s = null;
    try {
        s = ConnectDb.getSession();
        s.getTransaction().begin();
        for (E e : es) {
            s.update(e);
        }
        s.getTransaction().commit();
        for (E e : es) {
            s.refresh(e);
        }
    } catch(Exception ex){
        ex.printStackTrace();
        try { if (s != null) s.getTransaction().rollback(); } catch (Exception ignored) {}
        throw ex;
    } finally {
        try { if (s != null) s.close(); } catch (Exception ignored) {}
    }
}

如您所见,该方法开始并手动提交/回滚事务。因此,如果我需要使用此方法更新Invoice及其Items,则会开始和结束两个事务。

有没有一个很好的方法,而不必创建方法updateInvoiceAndItsItems(Invoice invoice, InvoiceItems... items)

更新 这是一个桌面应用程序,因此,没有自动事务管理。

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用CommandsCommandProcessor等内容?

http://wiki.hsr.ch/APF/files/CommandProcessor.pdf