2011-01-06 64 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子句中添加它。