Java 使用池数据源配置DAO工厂

Java 使用池数据源配置DAO工厂,java,factory,dao,Java,Factory,Dao,我想要一些关于使用池数据源配置DAO工厂的建议。假设它是一个JDBC DAO工厂(来自抽象工厂),池数据源由应用服务器(例如Glassfish)配置和管理 当第一次创建工厂时(单例模式),它会对池数据源进行JNDI查找,例如从属性文件进行查找,这将在JDBC DAO工厂上设置池数据源 然后,当您实例化并返回具体的DAO时,您是否会向它传递对datasource的引用,以便它能够检索到与数据库的连接?基本上,我所做的是将该datasource封装为名为DAO的基类中的字段。在DAO的构造函数中,传

我想要一些关于使用池数据源配置DAO工厂的建议。假设它是一个JDBC DAO工厂(来自抽象工厂),池数据源由应用服务器(例如Glassfish)配置和管理

当第一次创建工厂时(单例模式),它会对池数据源进行JNDI查找,例如从属性文件进行查找,这将在JDBC DAO工厂上设置池数据源


然后,当您实例化并返回具体的DAO时,您是否会向它传递对datasource的引用,以便它能够检索到与数据库的连接?

基本上,我所做的是将该datasource封装为名为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类还有一些其他实用程序方法,如cleanup方法,它会以静默方式关闭ResultSet、语句和连接。这样,我只需要在所有方法的finally子句中添加这个