2011-01-06 61 views
0

關於配置帶池池數據源的DAO工廠,我有點建議。假設它是一個JDBC DAO工廠(來自抽象工廠),並且池數據源由應用程序服務器配置和管理,例如Glassfish使用池化數據源配置DAO工廠

當工廠第一次創建(單例模式)時,它爲彙集的數據源進行JNDI查找,例如,從一個屬性文件中,它將在JDBC DAO工廠上設置池數據源。

然後,當你實例化並返回具體的DAO時,你會傳遞一個對數據源的引用,以便它可以檢索到數據庫的連接?

回答

0

基本上我所做的就是將該數據源封裝爲一個稱爲DAO的基類中的字段。在DAO的構造函數中,傳遞所需連接的JNDI名稱。

public DAO(String jndiName) throws NamingException { 
    ds = DataSourceFactory.getInstance().lookup(jndiName); 
} 

然後,在所有具體的類中,您只需從DAO擴展並可以使用數據源。

public concreteDAO() throws NamingException { 
    super("Some JNDI Name That this DAO should know"); 
} 

相同DAO類有一些其它的實用方法類似的清理方法中,默默關閉結果集,語句和連接。這樣我只需要在我的所有方法的finally子句中添加它。