如何处理连接池和DAO?

时间:2017-05-26 03:42:36

标签: java datasource jndi connection-pooling

我正在了解JDBC连接池,使用DataSource获取JNDI实例听起来相对容易:

DataSource ds = (DataSource)ctx.lookup("jdbc/myDB");

我发现的所有教程仅在一个对象中显示此代码,但我的问题是当我有几个DataSource对象需要从数据库中获取数据时如何使用DAO

  1. 在每个新的DAO对象的构造函数上使用上面的代码进行连接池是否可以?我认为同样的DataSource将是每次都会返回,就像单词Singleton那样,持有一个DataSource并返回它,或者我错了,每次都会返回不同的DataSource并使用不同的池,打败我的目的?

  2. 我应该在单身人士中持有DataSource并且只运行一次JNDI搜索,或者搜索开销是否可以忽略,这是一个愚蠢的优化? < / p>

1 个答案:

答案 0 :(得分:1)

  
      
  1. 在每个新DAO对象的构造函数上使用上面的代码进行连接池是否可以?我认为每次都会返回相同的DataSource,就像Dictionary Singleton会做的那样,持有一个DataSource并返回它,或者我错了,每次都会返回一个不同的DataSource并使用不同的池,从而打败了我的目的? / LI>   

每次都应该返回相同的DataSource对象。如果它不是字面上相同的对象,那么它应该至少共享相同的底层连接池。

  
      
  1. 我应该在Singleton中保存DataSource并且只运行一次JNDI搜索,或者搜索开销是否可以忽略,这是一个愚蠢的优化?
  2.   

与在远程数据库上执行操作相比,JNDI的搜索开销可以忽略不计,因此不需要缓存DataSource对象。