`
唯快不破
  • 浏览: 81961 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

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了。
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics