Hibernate4+Spring3 配置数据源

本文详细介绍了在Hibernate4和Spring3整合时如何配置数据源,包括JDBC、proxool的直接配置、通过proxool.xml以及jdbc.properties配置。文章提到了 proxool在与spring3整合时的注意事项,并对比了c3p0、dbcp和proxool这三种数据库连接池管理工具的优缺点,推荐使用proxool因其资源消耗低且具备连接状态监控功能。
摘要由CSDN通过智能技术生成

Hibernate4 + Spring3 整合,配置sessionFactory时,需要注入dataSource,否则报错。sessionFactory配置如下:

<!-- 配置SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
	<property name="configLocation">
		<value>classpath:config/hibernate.cfg.xml</value>
	</property>
	<property name="dataSource" ref="dataSource" />
	
	<!-- 简化注册hbm.xml文件 -->
	<property name="packagesToScan">
		<list>
			<value>com.ys.entity</value>
		</list>
	</property>
</bean>

我测试的几种配置数据源的方式:

(1)JDBC

(2)proxool——直接配置

(3)proxool——采用proxool.xml配置

(4)proxool——引入jdbc.properties配置

下面来分别介绍:

(1)JDBC

<!-- JDBC -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
	<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
	<property name="url" value="jdbc:oracle:thin:@192.168.24.23:1521:orcl" />
	<property name="username" value="yao" />
	<property name="password" value="yao" />
</bean>

(2)proxool——直接配置

proxool-0.9.1.jar和spring3整合时,不支持把用户名和密码配置在spring配置文件中,可采用后面两种方式实现。

<!-- Proxool直接配置 -->
<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource">
	<property name="alias" value="proxoolDataSource" />
	<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
	<property name="driverUrl" value="jdbc:oracle:thin:@192.168.24.23:1521:orcl" />
	<property name="user" value="yao" />
	<property name="password" value="yao" />
	最少保持的空闲连接数(默认2个)
	<property name="prototypeCount" value="2" />
	最大连接数(默认5个)
	<property name="maximumConnectionCount" value="5" />
	最小连接数(默认2个)
	<property name="minimumConnectionCount" value="2" />
	最大活动时间(超过此时间线程将被kill,默认5分钟)
	<property name="maximumActiveTime" value="300000" />
	同时最大连接数
	<property name="simultaneousBuildThrottle" value="3" />
</bean>

(3)proxool——采用proxool.xml配置

<!-- 采用proxool.xml配置 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
	<property name="driverClassName" value="org.logicalcobwebs.proxool.ProxoolDriver" />
	<property name="url" value="proxool.db12" />
</bean>

proxool.xml

<?xml version="1.0" encoding="UTF-8"?>
<proxool-config>
	<proxool>
		<alias>db12</alias>
		<driver-url>jdbc:oracle:thin:@192.168.24.23:1521:orcl</driver-url>
		<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
		<driver-properties>
			<property name="user" value="yao" />
			<property name="password" value="yao" />
		</driver-properties>
		<prototype-count>2</prototype-count>
		<maximum-connection-count>5</maximum-connection-count>
		<minimum-connection-count>2</minimum-connection-count>
		<maximum-new-connections>5</maximum-new-connections>
		<house-keeping-sleep-time>60000</house-keeping-sleep-time>
		<test-before-use>true</test-before-use>
		<house-keeping-test-sql>select sysdate from dual</house-keeping-test-sql>
	</proxool>
</proxool-config>

(4)proxool——引入jdbc.properties配置

<!-- 引入jdbc.properties文件 -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
	<property name="locations">
		<list>
			<value>classpath:config/jdbc.properties</value>
		</list>
	</property>
</bean>

<bean id="dataSource" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy">
	<property name="targetDataSource">
		<bean class="org.logicalcobwebs.proxool.ProxoolDataSource">
			<property name="driver" value="${jdbc.driverClassName}" />
			<property name="driverUrl" value="${jdbc.url}" />
			<property name="user" value="${jdbc.username}" />
			<property name="password" value="${jdbc.password}"></property>
			<property name="maximumConnectionCount" value="${proxool.maxConnCount}" />
			<property name="minimumConnectionCount" value="${proxool.minConnCount}" />
			<property name="simultaneousBuildThrottle" value="${proxool.simultaneousBuildThrottle}" />
			<property name="statistics" value="${proxool.statistics}" />
			<property name="trace" value="${proxool.trace}" />
		</bean>
	</property>
</bean>


上面只介绍了采用JDBC和proxool配置数据源。

常用的数据库连接池管理工具有:c3p0,dbcp和proxool,我们还可以采用c3p9和dbcp来配置数据源。

网上的评价是:

c3p0比较耗费资源,效率方面可能要低一点。

dbcp在实践中存在BUG,在某些种情会产生很多空连接不能释放,Hibernate3.0已经放弃了对其的支持。

proxool的负面评价较少,现在比较推荐它,而且它还提供即时监控连接池状态的功能,便于发现连接泄漏的情况。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值