Hibernate基础配置选项主要围绕SessionFactory展开:
在hibernate.cfg.xml配置文件中,我们可以通过mapping节点配置需要加载的Hibernate映射文件,如果选用了propertie
形式的配置文件(hibernate.properties),由于缺乏相应的配置条目,这时候就需要通过编码进行加载:
Configuration cfg = new Configuration().addFile("TUser.hbm.xml").addClass(com.redsage.db.entity.TGroup.class)
1、添加位于CLASSPATH根目录下的TUser.hbm.xml映射文件
2、以class形式加载映射实体类com.readsage.db.entity.TGroup
在Hibernate中,可以设置2种数据库访问策略:一种是根据指定的JDBC参数进行数据库连接,由Hibernate来完成连接管
理过程:另外一种则是通过JNDI完成数据库连接获取。
1、数据库适配器
hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
2、数据库JDBC驱动类
hibernate.connection.driver_class com.mysql.jdbc.Driver
JNDI配置:
hibernate.connection.datasource jdbc/test
3、数据库URL
hibernate.connection.url jdbc:mysql://localhost/sample
4、数据库用户名
hibernate.connection.username root
5、数据库密码
hiberante.connection.password
当我们使用JDBC方式访问数据库时,可以为其指定数据库连接池实现,目前Hibernate支持4种连接池实现组件:
C3P0:
hibernate.c3p0.max_size 2
hibernate.c3p0.min_size 2
//获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒
hibernate.c3p0.timeout 5000
//最大的PreparedStatement的数量
hibernate.c3p0.max_statements 100
//每隔3000秒检查连接池里的空闲连接 ,单位是秒
hibernate.c3p0.idle_test_period 3000
//当连接池里面的连接用完的时候,C3P0一下获取的新的连接数
hibernate.c3p0.acquire_increment 2
//每次都验证连接是否可用
hibernate.c3p0.validate false
hibernate.connection.provider_class net.sf.hibernate.connection.C3p0ConnectionProvider
解释:
hibernate.c3p0.timeout,这个表示连接池中的连接对象在多长时间没有使用过后,就应该被销毁
hibernate.c3p0.idle_test_period ,这个表示连接池检测线程多长时间检测一次池内的所有链接对象是否超时
注意:连接对象自己不会把自己从连接池中移除,而是专门有一个线程按照一定的时间间隔
(hibernate.c3p0.idle_test_period )来做这件事,这个线程通过比较连接对象最后一次被使用时间和当前时间的时间差来
和hibernate.c3p0.timeout做对比,进而决定是否销毁这个连接对象。
DBCP:
//连接池的最大活动个数
hibernate.dbcp.maxActive 100
//当连接池中的连接已经被耗尽的时候,DBCP将怎样处理( 0 = 失败, 1 = 等待, 2= 增长)
hibernate.dbcp.whenExhaustedAction 1
//最大等待时间
hibernate.dbcp.maxWait 120000
//没有人用连接的时候,最大闲置的连接个数。
hibernate.dbcp.maxIdle 10
hibernate.dbcp.ps.maxActive 100
hibernate.dbcp.ps.whenExhaustendAction 1
hibernate.dbcp.ps.maxWait 120000
hibernate.dbcp.ps.maxIdle 10
//给出一条简单的sql语句进行验证
hibernate.dbcp.validationQuery select 1 from dual
//在取出连接时进行有效验证
hibernate.dbcp.testOnBorrow true
//在放回连接时进行有效验证
hibernate.dbcp.testOnreturn false
//Hibernate已经实现了DBCP Provider实现,别忘了在下面的键值去掉#字符
hibernate.connection.provider_class net.sf.hibernate.connection.DBCPConnectionProvider
posted on 2009-10-11 11:11
王永庆 阅读(287)
评论(0) 编辑 收藏 所属分类:
HIBERNATE