2012-12-27 25 views
1

必須在DAO設計模式中放置連接對象嗎?DAO。 JDBC。連接對象放置在哪裏?

我需要用2種方法創建單獨的類(例如DaoManager):open()close()?而在業務邏輯不喜歡:

DaoManager.open(); 
PersonDao personDao = DaoFactory.getPersonDao(); 
Person person = personDao.getById(personId); 
.... //more DAO operations 
DaoManager.close() 

回答

2

連接應該是PersonDao.getById()方法(和其他DAO方法)的局部變量。它應該從DataSource獲取連接,使用它並在finally塊中關閉它。

如果您更多地瞭解了您的環境(Spring,EJB容器?),我可以給出更多解釋。

+0

謝謝。我使用WAS 7(EJB容器)。如何處理WAS中的DataSource我知道..但實際上我不使用JDBC,我使用另一個具有自定義存儲庫的框架。而且它也有Connection對象等等。所以我想盡可能保持我的代碼抽象,以便輕鬆更改內部實現以使用JDBC/JPA。 – MyTitle

+0

那麼,我們怎麼回答呢?我們對這個其他框架一無所知。 –

+0

所以在DataSource的情況下,應該如何看待我的DAO類(我認爲我的框架在實現中也使用了DataSource,因此代碼應該是相同的)?我需要DAOFactory,並且在DAOFactory的構造函數中,我需要放置'Connection'對象? DAOFactory會初始化'PersonDAO'放入構造函數Connection實例變量(getPersonDao(mConnection))? – MyTitle

1

在您通常會在連接池中保持連接,以便他們能夠用於多種用途重複使用大型應用程序。一個是這樣做的,因爲打開一個新的數據庫連接可能有點貴。

DAO獲取對池的引用並在需要時取出連接。手術後,它會把它送回泳池。

有幾個可用的連接池的開源實現,您可能想要重用其中之一。