2012-12-07 52 views
1

使用AOP打開和關閉數據庫連接是一種很好的做法嗎?我想在我的DAO類中使用AOP。使用AOP打開和關閉數據庫連接

例如,內部方法public User createUser(String name)我不想編寫像Connection.open()Connection.close()這樣的代碼,我想使用方面自動執行此操作。

回答

1

只要人們使用你的方法和API將知道該方法初始化連接,甚至更重要的是關閉它後,這是非常有意義的。不過,有些事情需要考慮。

想想API的一致性。所有方法是否打開和關閉連接?如果沒有,爲什麼有些人不這樣做,你應該怎麼做才能明確表示他們不會使用API​​的人?

記住要考慮錯誤處理。當發生錯誤時,例如它拋出的異常,方法退出後的連接狀態應該是unambigouos。

記住重入。如果一個方法可以從多個線程執行,並且影響全局狀態,那麼您很危險地接近一個災難處方。確保安全並使其可以理解。

在旁註中,重新考慮每次方法調用後關閉連接。每次向數據庫添加行時打開和關閉連接是否合理?性能方面,重新使用連接進行進一步查詢更爲合理。

0

使用ORM,如Hibernate或Eclipselink,加上Spring和Transactions/AOP,它會爲您處理所有事情。

你不應該寫一個好的持久性框架的Connection.open。這幾天有很多選擇。

Aspects在Java中對日誌記錄,安全性和緩存等方面有很多意義。但是我會將持久性內容留給持久性庫。他們非常成熟,非常可靠。