hibernate.properties配置文件的简单配置信息:
dataSource.driverClassName= com.mysql.jdbc.Driver
dataSource.username = root
dataSource.password = root
dataSource.dialect = www.tongmap.cn.utils.MySQLDialectImpl
dataSource.url = jdbc:mysql://localhost:3306/sm
dataSource.hbm2ddl.auto = update
maven配置的jar依赖pom.xml,说明一下,native类型的jar包是我自己下载jar包后手工添加到本地仓库中的,并不是使用maven自动下载的(网络问题),使用maven下载需要把native修改为com.cloudhopper.proxool:
<!-- c3p0数据库连接池用到的jar包 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.1</version> </dependency> <!-- proxool数据库连接池用到的jar包 <dependency> <groupId>native</groupId> <artifactId>proxool</artifactId> <version>0.9.1</version> </dependency> <dependency> <groupId>native</groupId> <artifactId>proxool-cglib</artifactId> <version>0.9.1</version> </dependency> --> <!-- DBCP数据库连接池用到的jar包 <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> -->
注意:我使用的c3p0版本为0.9.1.1,所以只要一个jar包就可以了,如果使用更新版本的c3p0,会有两个jar包,以c3p0-0.9.2.1为例,会需要以下依赖:
<dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.2.1</version> </dependency> <dependency> <groupId>com.mchange</groupId> <artifactId>mchange-commons-java</artifactId> <version>0.2.3.4</version> </dependency>
applicationContext.xml文件的配置,至于更详细的大家可以在官网中查看资料,每个配置的官网我在注释中有说明:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
<!-- 设置使用注解的类所在的jar包 -->
<context:component-scan base-package="www.tongmap.cn" />
<!-- 根据类路径加载hibernate的配置文件 -->
<context:property-placeholder location="classpath:hibernate.properties" />
<!-- 配置项目的MySQL数据库的数据源 -->
<!-- Spring本身也提供了一个简单的数据源实现类DriverManagerDataSource ,它位于org.springframework.jdbc.datasource包中。 -->
<!-- 这个类实现了javax.sql.DataSource接口,但它并没有提供池化连接的机制,每次调用getConnection()获取新连接时,只是简单地创建一个新的连接。 -->
<!-- 因此,这个数据源类比较适合在单元测试 或简单的独立应用中使用,因为它不需要额外的依赖类。 -->
<!-- 其提供的连接没有进行池管理,当连接数到达一定的大小会出现异常。 -->
<!--
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
destroy-method="close">
<property name="driverClassName" value="${dataSource.driverClassName}" />
<property name="url" value="${dataSource.url}" />
<property name="username" value="${dataSource.username}" />
<property name="password" value="${dataSource.password}" />
</bean>
-->
<!-- c3p0式数据源和数据库连接池 -->
<!-- 配置说明官网:http://www.mchange.com/projects/c3p0/ -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${dataSource.driverClassName}"></property>
<property name="jdbcUrl" value="${dataSource.url}"></property>
<property name="user" value="${dataSource.username}"></property>
<property name="password" value="${dataSource.password}"></property>
<property name="minPoolSize" value="10"></property>
<!--初始化时获取15个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
<property name="initialPoolSize" value="15"></property>
<!--连接池中保留的最大连接数。Default: 15 -->
<property name="maxPoolSize" value="30"></property>
<!--当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出
SQLException,如设为0则无限期等待。单位毫秒。Default: 0 -->
<property name="checkoutTimeout" value="3000"></property>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement" value="2"></property>
<!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
<property name="acquireRetryAttempts" value="5"></property>
<!--两次连接间隔时间,单位毫秒。Default: 1000 -->
<property name="acquireRetryDelay" value="1000"></property>
<!--连接关闭时默认将所有未提交的操作回滚。Default: false -->
<property name="autoCommitOnClose" value="false"></property>
<!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效
保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试
获取连接失败后该数据源将申明已断开并永久关闭。Default: false-->
<property name="breakAfterAcquireFailure" value="false"></property>
<!-- 符合JDBC标准、用于控制 PreparedStatements 数量的参数,数据源中单个连接缓存的 PreparedStatements 数量,
与 maxStatementsPerConnection(非标准) 参数有点像 -->
<property name="maxStatements" value="100"></property>
<!--最大空闲时间,指定秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="maxIdleTime" value="0"></property>
<!--每1200秒检查所有连接池中的空闲连接。Default: 0 -->
<property name="idleConnectionTestPeriod" value="1200"></property>
<!--如果设为true那么在取得连接的同时将校验连接的有效性。Default: false -->
<property name="testConnectionOnCheckin" value="true"></property>
<!--c3p0将建一张名为testConnection的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么
属性preferredTestQuery将被忽略。你不能在这张testConnection表上进行任何操作,它将只供c3p0测试
使用。Default: null-->
<property name="automaticTestTable" value="testConnection"></property>
</bean>
<!-- proxool式数据源和数据库连接池 -->
<!--
<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource">
<property name="driver" value="${dataSource.driverClassName}"></property>
<property name="driverUrl" value="${dataSource.url}"></property>
<property name="user" value="${dataSource.username}"></property>
<property name="password" value="${dataSource.password}"></property>
<property name="maximumActiveTime" value="300000"></property>
最少保持的空闲连接数
<property name="prototypeCount" value="5"></property>
最小连接数
<property name="minimumConnectionCount" value="2"></property>
<property name="maximumConnectionCount" value="50"></property>
<property name="simultaneousBuildThrottle" value="50"></property>
</bean>
-->
<!-- DBCP式数据源和数据库连接池 -->
<!-- 配置说明官网:http://commons.apache.org/proper/commons-dbcp/configuration.html
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${dataSource.driverClassName}"></property>
<property name="url" value="${dataSource.url}"></property>
<property name="username" value="${dataSource.username}"></property>
<property name="password" value="${dataSource.password}"></property>
<property name="initialSize" value="10"></property>
<property name="maxActive" value="30"></property>
<property name="maxIdle" value="5"></property>
</bean>
-->
<!-- DBCP采用JNDI式数据源和数据库连接池 -->
<!--
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/zhang"></property>
</bean>
-->
<!-- 配置MySQL数据库的heibenate的sessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${dataSource.dialect}</prop>
<prop key="hibernate.hbm2ddl.auto">${dataSource.hbm2ddl.auto}</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.use_sql_comments">true</prop>
</props>
</property>
<!-- 扫描实体类,也就是平时所说的model -->
<property name="packagesToScan">
<list>
<value>www.tongmap.cn.entity</value>
</list>
</property>
</bean>
<!-- 配置MySQL数据库的spring的事务管理 -->
<!-- 要在 Spring 中使用 @Transactional不加参数的注释,必须在 Spring 配置文件中添加以下代码行 -->
<bean
class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
</beans>
本文详细介绍了在Spring框架下,如何配置不同类型的数据库连接池(c3p0、proxool、DBCP)与Hibernate框架进行整合,包括配置文件、依赖引入及关键配置项解析。
624

被折叠的 条评论
为什么被折叠?



