我有两个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)
?
更新 这是一个桌面应用程序,因此,没有自动事务管理。
答案 0 :(得分:0)
您是否考虑过使用Commands
和CommandProcessor
等内容?