我有一個Spring + Hibernate + MySQL web應用程序,現在它只是一個hello-world-test-area。製作一個「TransactionAction」的內部類
我的一個服務類實現此方法:
public List<Offerta> tutte() {
List<Offerta> tutte = null;
TransactionStatus status = txm.getTransaction(new DefaultTransactionDefinition());
try {
tutte = dao.getAll(Offerta.class);
txm.commit(status);
} catch (Exception e) {
e.printStackTrace();
txm.rollback(status);
}
return tutte;
}
'TXM' 是注入的PlatformTransactionManager。
我現在想要的是避免在我的所有服務的方法中重複「包裝」事務代碼!
我想是這樣的:
someHelperTransactionClass.doThisInTransaction(new TransactionAction() {
List l = dao.queryForSomething();
});
但是,這是一個內部類:我怎麼能傳遞,並從它的數據?我的意思是,我怎樣才能從TransactionAction得到最終的「l」列表?您可以通過多種方式回答這個特定情況,但我需要的是一種通用的TransactionAction或一種不同的解決方案,讓我可以編寫實際的數據庫代碼,而不必每次都寫相同的無聊代碼。
請不要回答「爲什麼不使用@Transactional註釋或AOP tx:建議配置?」因爲我不能! 爲什麼?我使用的是Google AppEngine,而那些酷玩家並不那麼酷:對javax.naming包的禁用訪問,以及那些用聲明式事務處理的好方法。 : - \
有趣但是....你能用一些僞代碼編輯你的答案嗎?只是爲了理解如何適用於我的情況。 – 2012-04-10 08:37:37
請回答我! :) – 2012-04-10 10:06:01