5.配置文件

Hibernate 配置文件主要用于配置数据库连接和 Hibernate 运行时所需的各种属性,每个 Hibernate 配置文件对应一个 Configuration 对象

Hibernate配置文件可以有两种格式:

①hibernate.properties

②hibernate.cfg.xml

hibernate.cfg.xml的常用属性:

JDBC 连接属性

connection.url:数据库URL

connection.username:数据库用户名

connection.password:数据库用户密码

connection.driver_class:数据库JDBC驱动

dialect:配置数据库的方言,根据底层的数据库不同产生不同的 sql 语句,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: 当数据库连接池中的连接耗尽时, 同一时刻获取多少个数据库连接

其他

show_sql:是否将运行期生成的SQL输出到日志以供调试。取值 true | false

format_sql:是否将 SQL 转化为格式良好的 SQL . 取值 true | false

hbm2ddl.auto:在启动和停止时自动地创建,更新或删除数据库模式。取值 create | update | create-drop | validate

hibernate.jdbc.fetch_size:实质是调用 Statement.setFetchSize() 方法设定 JDBC 的

Statement 读取数据的时候每次从数据库中取出的记录条数。例如一次查询1万条记录,对于Oracle的JDBC驱动来说,

是不会 1 次性把1万条取出来的,而只会取出 fetchSize 条数,当结果集遍历完了这些记录以后,再去数据库取

fetchSize 条数据。因此大大节省了无谓的内存消耗。Fetch Size设的越大,读数据库的次数越少,速度越快;

Fetch Size越小,读数据库的次数越多,速度越慢。Oracle数据库的JDBC驱动默认的Fetch Size = 10,

是一个保守的设定,根据测试,当Fetch Size=50时,性能会提升1倍之多,当 fetchSize=100,性能还能继续提升20%,

Fetch Size继续增大,性能提升的就不显著了。并不是所有的数据库都支持Fetch Size特性,例如MySQL就不支持。

hibernate.jdbc.batch_size:设定对数据库进行批量删除,批量更新和批量插入的时候的批次大小,

类似于设置缓冲区大小的意思。batchSize 越大,批量操作时向数据库发送sql的次数越少,速度就越快。测试结果是

当Batch Size=0的时候,使用Hibernate对Oracle数据库删除1万条记录需要25秒,Batch Size = 50的时候,

删除仅仅需要5秒!Oracle数据库 batchSize=30 的时候比较合适。

<!-- 配置文件 -->
<hibernate-configuration>
<session-factory>
<!-- 配置链接数据库的基本信息 -->
<!-- 数据库连接的URL -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_xml</property>
<!-- 数据库驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 数据库密码 -->
<property name="hibernate.connection.password">root</property> <!-- 配置Hibernate的基本信息 -->
<!-- 程序运行时是否在控制台输出执行的SQL语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 是否对SQL进行格式化 -->
<property name="format_sql">true</property>
<!-- 指定生成表的策略 -->
<property name="hbm2ddl.auto">update</property>
<!-- 配置Hibernate方言,即使用的不同的数据库类型,该方言支持事务 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<!-- 数据库编码方式 -->
<property name="Connection.characterEncoding">UTF-8</property>
<!--
validate:加载hibernate时,验证创建数据库表结构,启动时验证现有schema与你配置的hibernate是否一致,如果不一致就抛出异常,并不做更新
create:每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。
create-drop:加载hibernate时创建,退出是删除表结构
update:加载hibernate自动更新数据库结构
-->
<property name="hbm2ddl.auto">update</property>
<!-- 设置事务的隔离级别 -->
<property name="hibernate.connection.isolation">2</property>
<!-- 删除对象后,使其OID置位null -->
<property name="hibernate.use_identifier_rollback">true</property> <!-- 配置C3P0数据源 -->
<!-- 数据库连接池的最大连接数 -->
<property name="hibernate.c3p0.max_size">10</property>
<!-- 数据库连接池的最小连接数 -->
<property name="hibernate.c3p0.min_size">5</property>
<!-- 当数据库连接池中的连接耗尽时, 同一时刻获取多少个数据库连接 -->
<property name="hibernate.c3p0.acquire_increment">2</property>
<!-- 表示连接池检测线程多长时间检测一次池内的所有链接对象是否超时 -->
<property name="hibernate.c3p0.idle_test_period">2000</property>
<!-- 数据库连接池中连接对象在多长时间没有使用过后,就应该被销毁 -->
<property name="hibernate.c3p0.timeout">2000</property>
<!-- 缓存 Statement 对象的数量 -->
<property name="hibernate.c3p0.max_statements">10</property>
<!-- 设定 JDBC 的 Statement 读取数据的时候每次从数据库中取出的记录条数 -->
<property name="hibernate.jdbc.fetch_size">100</property>
<!-- 设定对数据库进行批量删除,批量更新和批量插入的时候的批次大小 -->
<property name="jdbc.batch_size">30</property>
<!-- 配置映射文件时,这两种方法只能使用其中之一,同时使用会报错 -->
<!--使用配置文件时: 加载映射文件,注意使用的是斜杠作为分割符,有文件的后缀名 -->
<mapping resource="com/test/withXml/entity/User.hbm.xml"></mapping>
<!-- 使用注解时:加载持久化类文件,注意使用的是圆点作为分割符,文件的后缀名 -->
<!-- <mapping class="com.test.withAnnotation.entity.UsersAnno"/> -->
</session-factory>
</hibernate-configuration>

Hibernate(3)配置文件hibernate.cfg.xml的更多相关文章

  1. 1-2 hibernate主配置文件hibernate.cfg.xml详解

    详 http://www.cnblogs.com/biehongli/p/6531575.html Hibernate的主配置文件hibernate.cfg.xml 1:Hibernate的主配置文件 ...

  2. Hibernate的配置文件,hibernate.cfg.xml

    单纯的只针对持久层框架 Hibernate 配置文件的一些总结 一.Hibernate底层原理 1. Hibernate保存原理 目的:把domain对象保存到数据库的表,形成一条记录. sql: i ...

  3. Hibernate的配置文件 Hibernate.cfg.xml与xxx.hbm.xml

    1.hibernate.cfg.xml配置如下: (数据库连接配置) <?xml version="1.0" encoding="UTF-8"?>& ...

  4. hibernate的配置文件,使用XML方式

    <?xml version="1.0" encoding="UTF-8"?> <!-- 标准的XML文件的起始行,version='1.0'表 ...

  5. 引入Activiti配置文件activiti.cfg.xml

    前面我们用代码实现了生成25张activiti表,今天我们用Activiti提供的activiti.cfg.xml配置文件来简化实现前面的功能: 官方文档参考地址:http://activiti.or ...

  6. activiti7配置文件activiti.cfg.xml,日志文件log4j.properties及pom文件

    activiti.cfg.xml:<?xml version="1.0" encoding="UTF-8"?><beans xmlns=&qu ...

  7. Hibernate学习二----------hibernate简介

    © 版权声明:本文为博主原创文章,转载请注明出处 1.hibernate.cfg.xml常用配置 - hibernate.show_sql:是否把Hibernate运行时的SQL语句输出到控制台,编码 ...

  8. hibernate4.3.5,Final hibernate.cfg.xml的配置

    今天是接触hibernate的第二天,用来练习的是hibernate最新的版本hibernate-release-4.3.5.Final 要使用hibernate,则先要引入它的jar包,要引入的ja ...

  9. java:Hibernate框架1(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态,增删查改)

    1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件  准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cf ...

随机推荐

  1. html知识杂记

    1.HTML中不支持 空格.回车.制表符,它们都会被解析成一个空白字符.2.HTML 是用来描述网页的一种语言.3.元素的内容是开始标签与结束标签之间的内容.4.即使 <br> 在所有浏览 ...

  2. alpha冲刺9/10

    目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:冲刺倒计时之9 团队部分 后敬甲(组长) 过去两天完成了哪些任务 答辩准备中 和大佬们跟进进度 接下来的计划 准备答辩 ...

  3. 【译】理解JavaScript中的柯里化

    译文开始 函数式编程是一种编程风格,这种编程风格就是试图将传递函数作为参数(即将作为回调函数)和返回一个函数,但没有函数副作用(函数副作用即会改变程序的状态). 有很多语言采用这种编程风格,其中包括J ...

  4. MySQL事务提交过程(二)

    上一篇文章我们介绍了在关闭binlog的情况下,事务提交的大概流程.之所以关闭binlog,是因为开启binlog后事务提交流程会变成两阶段提交,这里的两阶段提交并不涉及分布式事务,当然mysql把它 ...

  5. ArcGIS 卷帘效果

    一直没注意ArcGIS自带了卷帘功能,使用方法:调出Effects工具条,里面就有卷帘工具. AE开发参考: http://bbs.esrichina-bj.cn/esri/viewthread.ph ...

  6. js下拉列表

    js清除下拉列表所选默认值 $("#lineId").val(“”); js清除下拉列表所有选项 $("#type").html(""); ...

  7. TF之AE:AE实现TF自带数据集数字真实值对比AE先encoder后decoder预测数字的精确对比—Jason niu

    import tensorflow as tf import numpy as np import matplotlib.pyplot as plt #Import MNIST data from t ...

  8. VC9、VC11、VC14、VC15库 32位 64位 免费下载

    VC9.VC11.VC14.VC15库 32位 64位 免费下载 更新版本的PHP是用VC11,VC14或VC15(分别为Visual Studio 2012,2015或2017编译器)构建的,并且包 ...

  9. Linux学习之RPM包管理-yum管理(十七)

    Linux学习之RPM包管理-yum管理 目录 IP地址配置 网络yum源 yum命令 光盘yum源搭建 IP地址配置 IP+子网掩码就可以在局域网(内网)使用. IP+子网掩码+网关+DNS就可以访 ...

  10. Python之路【第八篇】:面向对象的程序设计

    阅读目录 一 面向对象的程序设计的由来二 什么是面向对象的程序设计及为什么要有它三 类和对象3.1 什么是对象,什么是类3.2 类相关知识3.3 对象相关知识3.4 对象之间的交互3.5 类名称空间与 ...