获取jdbc连接分析

hibernate提供org.hibernate.connection.ConnectionProvider获取jdbc连接,ConnectionProvider实现类包括
DriverManagerConnectionProvider
DateSourceConnectionProvider
UserSuppliedConnectionProvider
C3P0ConnectionProvider,ProxoolConnectionProvider
简要说说这些实现
DriverManagerConnectionProvider用List维护连接,当jvm调用finalize方法时,关闭掉集合中的所有连接,并清空集合
getConnection
如果集合中有,则拿到最新的那个连接;如果没有,DriverManager获取连接
closeConnection
如果集合中连接的数量已经等于配置中指定的poolSize,则关闭此连接;如果没有则放入集合

DateSourceManagerConnectionProvider通过jndi查找数据源配置中的hibernate.jndi.class和hibernate.jndi.url用于初始化javax.naming.InitialContext常用jndi配置hibernate.connection.datasource指定数据源的名称
getConnection
通过javax.sql.DataSource,getConnection获取
closeConnection
java.sql.Connection.close
C3P0ConnectionProvider使用c3p0实现的javax.sql.DataSourcec3p0
ProxoolConnectionProvider使用proxool实现proxool
UserSuppliedConnectionProvider用户继承此类实现自己的连接提供者
至于使用哪种,由org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider决定
newConnectionProvider描述如下
如果hibernate.connection.provider_class不为空,使用实例化后的类
如果发现hibernate.connection.datasource,使用DatesourceConnectionProvider
如果发现hibernate.c3p0.*,使用C3P0ConnectionProvider
如果发现hibernate.proxool,使用ProxoolConnectionProvider
如果发现hibernate.connection.url,使用DriverManagerConnectionProvider
否则,返回UserSuppliedConnectionProvider
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值