使用AOP打開和關閉數據庫連接是一種很好的做法嗎?我想在我的DAO類中使用AOP。使用AOP打開和關閉數據庫連接
例如,內部方法public User createUser(String name)
我不想編寫像Connection.open()
和Connection.close()
這樣的代碼,我想使用方面自動執行此操作。
使用AOP打開和關閉數據庫連接是一種很好的做法嗎?我想在我的DAO類中使用AOP。使用AOP打開和關閉數據庫連接
例如,內部方法public User createUser(String name)
我不想編寫像Connection.open()
和Connection.close()
這樣的代碼,我想使用方面自動執行此操作。
只要人們使用你的方法和API將知道該方法初始化連接,甚至更重要的是關閉它後,這是非常有意義的。不過,有些事情需要考慮。
想想API的一致性。所有方法是否打開和關閉連接?如果沒有,爲什麼有些人不這樣做,你應該怎麼做才能明確表示他們不會使用API的人?
記住要考慮錯誤處理。當發生錯誤時,例如它拋出的異常,方法退出後的連接狀態應該是unambigouos。
記住重入。如果一個方法可以從多個線程執行,並且影響全局狀態,那麼您很危險地接近一個災難處方。確保安全並使其可以理解。
在旁註中,重新考慮每次方法調用後關閉連接。每次向數據庫添加行時打開和關閉連接是否合理?性能方面,重新使用連接進行進一步查詢更爲合理。
使用ORM,如Hibernate或Eclipselink,加上Spring和Transactions/AOP,它會爲您處理所有事情。
你不應該寫一個好的持久性框架的Connection.open。這幾天有很多選擇。
Aspects在Java中對日誌記錄,安全性和緩存等方面有很多意義。但是我會將持久性內容留給持久性庫。他們非常成熟,非常可靠。
如果它是一個web應用程序,您可能想要使用會話每請求模式。您可以使用HttpModule或ActionFilter來執行此操作。我會認爲這是一個沒有第三方AOP框架的AOP方法。另外:How can I implement a robust session-per-request pattern in my project, while focusing on information hiding?