我正在了解JDBC
连接池,使用DataSource
获取JNDI
实例听起来相对容易:
DataSource ds = (DataSource)ctx.lookup("jdbc/myDB");
我发现的所有教程仅在一个对象中显示此代码,但我的问题是当我有几个DataSource
对象需要从数据库中获取数据时如何使用DAO
。
在每个新的DAO
对象的构造函数上使用上面的代码进行连接池是否可以?我认为同样的DataSource
将是每次都会返回,就像单词Singleton那样,持有一个DataSource
并返回它,或者我错了,每次都会返回不同的DataSource
并使用不同的池,打败我的目的?
我应该在单身人士中持有DataSource
并且只运行一次JNDI
搜索,或者搜索开销是否可以忽略,这是一个愚蠢的优化? < / p>
答案 0 :(得分:1)
- 在每个新DAO对象的构造函数上使用上面的代码进行连接池是否可以?我认为每次都会返回相同的DataSource,就像Dictionary Singleton会做的那样,持有一个DataSource并返回它,或者我错了,每次都会返回一个不同的DataSource并使用不同的池,从而打败了我的目的? / LI> 醇>
每次都应该返回相同的DataSource对象。如果它不是字面上相同的对象,那么它应该至少共享相同的底层连接池。
- 我应该在Singleton中保存DataSource并且只运行一次JNDI搜索,或者搜索开销是否可以忽略,这是一个愚蠢的优化?
醇>
与在远程数据库上执行操作相比,JNDI的搜索开销可以忽略不计,因此不需要缓存DataSource对象。