<!--配置c3p0数据源-->
<!--数据库连接池最大连接数-->
<property name="hibernate.c3p0.max_size">10</property>
<!--数据库连接池最小连接数-->
<property name="hibernate.c3p0.min_size">5</property>
<!--当数据库连接池中连接耗尽时,同一时刻获取多少个数据库连接-->
<property name="c3p0.acquire_increment">2</property>
<!--数据库连接池中连接对象在多长时间没有使用过后,就应该被销毁-->
<property name="c3p0.idle_test_period">2000</property>
<!--表示连接池检测线程多长时间检测一次池内的所有对象是否超时,
连接池本身不会把自己从连接池中中移除,而是专门又一个线程按照一定的时间间隔来做这件事,
这个线程通过比较连接对象最后一次被使用时间和当前时间的时间差和timeout做比较,进而决定是否销毁这个连接对象-->
<property name="c3p0.timeout">2000</property>
<!--缓存Statement对象的数量-->
<property name="c3p0.max_statements">10</property>
<!--以下两个配置项对mysql无效,对oracle有效,有显著的性能提升-->
<!--设定JDBC的statement读取数据的时候的每次从数据库中取出的记录条数,100 是最合适的 -->
<property name="hibernate.jdbc.fetch_size">100</property>
<!--设定数据库进行批量删除,批量更新和批量插入的时候的批次大小-->
<property name="hibernate.jdbc.batch_size">30</property>
配置完了c3p0数据源之后,执行如下操作
public void testDoWork()
{
session.doWork(new Work() {
@Override
public void execute(Connection connection) throws SQLException {
System.out.println(connection); // jdbc原生connection
//调用存储过程,和jdbc写法一样
}
});
}
会发现数据源已经改为了c3p0了,如果无任何数据源信息,则使用的是jdbc原生的连接对象,一般的生产环境中,都会要求使用数据库连接池的,原因嘛,就是提高效率咯