hibernate--链接数据源C3P0

Hibernate 配置文件主要用于配置数据库连接和Hibernate运行时所需的各种属性,每一个配置文件对应于一个Configuration对象。一般定义在hibernate.cfg.xml文件中。在helloworld中我们已经学习了一些hibernate.cfg.xml文件的配置属性,大都是关于JDBC链接的一些属性,包括:
  1. connection.url:数据库URL
  2. connection.username:数据库用户名
  3. connection.password:数据库用户密码
  4. connection.driver_class:数据库JDBC驱动
  5. dialect:配置数据库的方言,根据底层的数据库不同产生不同的sql语句,Hibernate会针对数据库的特性在访问时进行优化
还有一些常用属性:
  1. show_sql:是否将运行期生成的SQL输出到日志以供调试。取值true| false
  2. format_sql:是否将SQL转化为格式良好的SQL. 取值 true| false
  3. hbm2ddl.auto:在启动和停止时自动地创建,更新或删除数据库模式。取值create(每次都重新创建表)| update(不会每次都建新表,只进行更新) | create-drop(运行是创建新表,然后删除) | validate
最后就是一些映射文件,用来标记表与实体类之间的映射文件的位置。

当然,在企业级开发中,数据源是必不可少的,本文简单介绍一下C3P0数据源在hibernate中的配置与使用:
  1. 当然是先导入jar包,加入到buildpath;在hibernate-release-4.2.4.Final\lib\optional\c3p0目录下可以找到我们需要的所有jar包
  2. 在hibernate中配置C3P0相关的属性;
  • hibernate.c3p0.max_size:数据库连接池的最大连接数
  • hibernate.c3p0.min_size:数据库连接池的最小连接数
  • hibernate.c3p0.timeout:   数据库连接池中连接对象在多长时间没有使用过后,就应该被销毁
  • hibernate.c3p0.max_statements:  缓存 Statement对象的数量
  • hibernate.c3p0.idle_test_period:  表示连接池检测线程多长时间检测一次池内的所有链接对象是否超时.连接池本身不会把自己从连接池中移除,而是专门有一个线程按照一定的时间间隔来做这件事,这个线程通过比较连接对象最后一次被使用时间和当前时间的时间差来和timeout做对比,进而决定是否销毁这个连接对象。
  • hibernate.c3p0.acquire_increment:当数据库连接池中的连接耗尽时,同一时刻获取多少个数据库连接
hibernate中使用C3P0数据源还是比较方便的,几乎没有太多的配置,我们可以通过获取connection来检测C3P0数据源是否配置成功。

最后,了解了两个其他配置属性:
hibernate.jdbc.fetch_size:实质是调用Statement.setFetchSize()方法设定 JDBC的 Statement读取数据的时候每次从数据库中取出的记录条数。
–例如一次查询1万条记录,对于Oracle的JDBC驱动来说,是不会1次性把1万条取出来的,而只会取出fetchSize条数,当结果集遍历完了这些记录以后,再去数据库取fetchSize条数据。因此大大节省了无谓的内存消耗。FetchSize设的越大,读数据库的次数越少,速度越快;FetchSize越小,读数据库的次数越多,速度越慢。Oracle数据库的JDBC驱动默认的FetchSize = 10,是一个保守的设定,根据测试,当FetchSize=50时,性能会提升1倍之多,当fetchSize=100,性能还能继续提升20%,FetchSize继续增大,性能提升的就不显著了。并不是所有的数据库都支持FetchSize特性,例如MySQL就不支持
•hibernate.jdbc.batch_size:设定对数据库进行批量删除,批量更新和批量插入的时候的批次大小,类似于设置缓冲区大小的意思。batchSize越大,批量操作时向数据库发送sql的次数越少,速度就越快。
–测试结果是当BatchSize=0的时候,使用Hibernate对Oracle数据库删除1万条记录需要25秒,BatchSize = 50的时候,删除仅仅需要5秒!Oracle数据库batchSize=30 的时候比较合适。

关于更多的配置特性会在深入的学习中慢慢总结。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值