2009-02-17 62 views
5

我正在使用的項目使用直接的JDBC數據訪問的所有樣板榮耀,並且不使用任何事務。我覺得使用事務並簡化數據訪問方法的編寫方式非常重要,特別是當前正在進行一些更改。該項目已有相當長的一段時間,並不適合ORM框架。它也使用了大量的單例(ugh),並且將它解開以使它能夠使用依賴注入將是相當多的工作,我認爲我不能說服任何人現在我們應該這樣做。如何在IoC容器外執行簡單的Spring JDBC事務?

我喜歡春天JDBC的接口,特別是通過其SimpleJdbcTemplate。我的問題是如何爲此啓用一些簡單的(每個servlet請求)事務,而不必在每個數據訪問方法中使用編程方式設置任何內容或使用Spring IoC容器或AOP。我打得周圍與我自己的架構,類似於SimpleJdbcTemplate的接口結束,並且可以使用一個請求 - 本地連接和事務時,它調用的請求(上下文是由通過ServletRequestListenerThreadLocal )。它似乎工作得很好,但我認爲使用像Spring JDBC這樣的外部庫會更好。

任何人都有這方面的經驗?

回答

5

也許您可以使用和TransactionCallback,如Programmatic Transaction Management中所述?

+0

這不工作,我很是如何想的,因爲它會使用TransactionTemplate在較高的應用水平,而不僅僅是有可能的話給JdbcTemplate類的每次調用使用請求,本地事務需要編程包裝調用。它應該可以正常工作。 – ColinD 2009-02-17 20:50:03

0

春天聲明處理事務爲你沒有你不必擔心寫AOP類。如果您使用的是JDK 5或更高版本以及Spring 2.5,則使用annotations可以更好。

我將與每個servlet的交易不同意。你應該有一個服務層,這是應用程序的一部分,知道工作單元。控制器調用處理事務的服務。

+0

我在問題中提到該應用程序目前不在Spring容器中,因此無法輕鬆移動到該容器中。如果可能的話,我很樂意使用這種聲明式交易。 – ColinD 2009-02-17 21:09:40