JDBC与Hibernate共用同一数据源

让jdbc与Hibernate共用同一个proxool数据库连接池,以便用jdbc查询Hibernate增删改。试了三种方法。只有在tomcat6设置jndi的方法较令人满意。
第一种是:
<bean   id="TestSource"   class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
<property name="driverClassName">
<value>org.logicalcobwebs.proxool.ProxoolDriver</value>
</property>
<property name="url">
<value>proxool.MyPool</value> <!--proxool是proxool.xml的文件名,MyPool是proxool.xml中配置的别名-->
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
……

结果是Hibernate无法获取dataSource。Hibernate无法运行

第二种是:
<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource">
<property name="driver">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="driverUrl">
<value>jdbc:oracle:thin:@localhost:1521:orcl</value>
</property>
<property name="user">
<value>xxx</value>
</property>
<property name="password">
<value>xxx</value>
</property>
<property name="alias">
<value>JDBCProxool</value>
</property>
<property name="prototypeCount">
<value>3</value>
</property>
<property name="maximumConnectionCount">
<value>30</value>
</property>
<property name="minimumConnectionCount">
<value>15</value>
</property>
<property name="houseKeepingSleepTime">
<value>90000</value>
</property>
<property name="maximumActiveTime">
<value>180000</value>
</property>
</bean>

结果是服务器启动时报错,提示不能将属性houseKeepingSleepTime的值从string转为long。去掉houseKeepingSleepTime后运行正常,但不能配置houseKeepingSleepTime总觉得有点瑕疵。

第三种:

数据库驱动包
proxool-0.9.1.jar
proxool-cglib.jar
commons-logging-1.0.4.jar
复制到<tomcat_home>/lib目录下
在tomcat\conf\context.xml 中配置

<Context>
<Resource name="jdbc/OraclePool"
auth="Container"
type="javax.sql.DataSource"
factory="org.logicalcobwebs.proxool.ProxoolDataSource"
proxool.alias="DBPool"
user="xxx"
password="xxx"
delegateProperties="foo=true"
proxool.jndi-name="oraclejndi"
proxool.driver-url="jdbc:oracle:thin:@localhost:1521:orcl"
proxool.driver-class="oracle.jdbc.driver.OracleDriver"
proxool.house-keeping-sleep-time="90000"
proxool.prototype-count="3"
proxool.maximum-connection-count="30"
proxool.minimum-connection-count="15"
/>
</Context>

Spring配置:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/OraclePool</value>
</property>
</bean>

结果是运行正常,这样就可以把dataSource注入jdbctemplate,sessionFactory注入Hibernatetemplate了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值