Topic: 实现javax.sql.DataSource 接口的类是不是都已经池化过了?谢谢

  Print this page

1.实现javax.sql.DataSource 接口的类是不是都已经池化过了?谢谢 Copy to clipboard
Posted by: eagle
Posted on: 2005-08-07 16:24

下面摘自JDK1。4。1 API:
The DataSource interface is implemented by a driver vendor. There are three types of implementations:

Basic implementation -- produces a standard Connection object
Connection pooling implementation -- produces a Connection object that will automatically participate in connection pooling. This implementation works with a middle-tier connection pooling manager.
Distributed transaction implementation -- produces a Connection object that may be used for distributed transactions and almost always participates in connection pooling. This implementation works with a middle-tier transaction manager and almost always with a connection pooling manager.
不知道是不是所有实现DataSource 的类都已经池化。还是有些池化,请大家指导,谢谢!

2.Re:实现javax.sql.DataSource 接口的类是不是都已经池化过了?谢谢 [Re: eagle] Copy to clipboard
Posted by: menzy
Posted on: 2005-08-07 16:30

看不懂吗?
是否池化取决于其实现者。

3.Re:实现javax.sql.DataSource 接口的类是不是都已经池化过了?谢谢 [Re: eagle] Copy to clipboard
Posted by: eagle
Posted on: 2005-08-08 09:14

就是说不是所有的driver vendor都池化了DataSource 的实现类?那我怎么去知道哪个实现了池化哪个没有呢?现在在各个服务器上都支持DataSource,我如果想换服务器还要去区分哪些是池化过的DataSource 的实现类,哪些是没有池化过的吗?谢谢menzy上面的回答,如果清楚我的意思,请您再给我指导一下,谢谢!

4.Re:实现javax.sql.DataSource 接口的类是不是都已经池化过了?谢谢 [Re: eagle] Copy to clipboard
Posted by: bluepure
Posted on: 2005-08-08 11:13

不是,在jdbc3以前的几乎没什么进行过池化的.

最简单好用的池化过的数据源是

org.apache.commons.dbcp.BasicDataSource

据我所知, Postgresql 数据库的jdbc驱动,在实现了jdbc3的版本里,

有自带的支持连接池的数据源.

org.postgresql.jdbc3.Jdbc3PoolingDataSource

最方便可靠的做法就是通过 org.apache.commons.dbcp.BasicDataSource来实现支持连接池的数据源,而不用依赖于某一个具体的数据库驱动.

当然其它的连接池还有 C3PO 等等

5.Re:实现javax.sql.DataSource 接口的类是不是都已经池化过了?谢谢 [Re: eagle] Copy to clipboard
Posted by: eagle
Posted on: 2005-08-10 17:59

感谢bluepure的回答!再次请问bluepure,您的意思是说driver vendor提供的DataSource 的实现类是否池化是与JDBC版本有关吗?DataSource 和JDBC有什么必然的联系吗?谢谢!
我的初衷是这样的,我写了些代码用到了DataSource ,但是我希望我的代码能适应不同driver vendor提供的DataSource。现在的问题是我无法区分哪些已经池化过哪些没有,也就不知道哪些要自己用代码池化。我相信大家一定有人写过这样的代码,请问你们是怎么处理这样的问题的呢?谢谢!

6.Re:实现javax.sql.DataSource 接口的类是不是都已经池化过了?谢谢 [Re: eagle] Copy to clipboard
Posted by: menzy
Posted on: 2005-08-11 16:21

其实连接池应当从设计角度看成一种优化策略,对于jdbc2以前的版本,没有提供相应的实现借口,但是从理论上说你可以做自己的连接池。
jdbc 2以后就可以找到连接池的具体实现了,似乎记得当初看jdbc 2 ext 的文档,后面就附有一个具体的连接池实现源码。当然你也可以参考别的实现。
考虑直接采用通过的工具实现数据源池化是一个思路,但你不知道对方的实现版本,只能通过配置设置使用通过池化数据源例如bluepure 的 dbcp, 或者使用vender specific的数据源。

7.Re:实现javax.sql.DataSource 接口的类是不是都已经池化过了?谢谢 [Re: eagle] Copy to clipboard
Posted by: eagle
Posted on: 2005-08-12 15:31

感谢menzy和bluepure 的回答,我虽然没有完全弄清楚如何去判断driver vendor提供的DataSource 的实现类是否池化,但是我在你们的回答中觉得这个和JDBC有很些关系,我先去读写JDBC文档,谢谢大家!


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923