关于使用池化数据源配置DAO工厂的一些建议。假设它的JDBC DAO工厂(来自抽象工厂)和池化数据源由应用服务器配置和管理,例如, Glassfish
首次创建工厂时(Singleton模式),它为池化数据源执行JNDI查找,例如从属性文件,它将在JDBC DAO工厂上设置池数据源。
然后,当你实例化并返回具体的DAO时,你会传递一个对datasource的引用,以便它可以检索到数据库的连接吗?
答案 0 :(得分: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类还有一些其他实用程序方法,如清理方法,可以静默关闭ResultSet,Statements和Connections。所以我只需要在我所有方法的finally子句中添加它。