我爱编程

Hibernate_3 hibernate.cfg.xml的常用

2017-10-18  本文已影响67人  mm_cuckoo

首先看一个简的 hibernate.cfg.xml 单配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- MySQL 数据库基本配置 -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://127.0.0.1:3306/hibernate_db?useUnicode=true&characterEncoding=UTF-8</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        
        <!-- 配置MySQL 方言 -->
        <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
        <!-- 配置是否显示SQL 语句 -->
        <property name="show_sql">true</property>
        <!-- 配置SQL语句格式化显示 -->
        <property name="format_sql">true</property>
        <property name="hbm2ddl.auto">update</property>
        
        <!-- 删除对象后,使 session 中的对象 OID 为 null -->
        <property name="hibernate.use_identifier_rollback">true</property>
        
        <!-- c3p0 配置 -->
        <!-- 设置最大链接数 -->
        <property name="hibernate.c3p0.max_size">200</property>
        <!-- 设置最小链接数 -->
        <property name="hibernate.c3p0.min_size">10</property>
        <!-- 当数据库连接池中的连接耗尽时, 同一时刻获取多少个数据库连接 -->
        <property name="hibernate.c3p0.acquire_increment">10</property>
        <!-- 缓存 Statement 对象的数量 -->
        <property name="hibernate.c3p0.max_statements">5</property>
        <!-- 连接池检测线程多长时间检测一次 -->
        <property name="hibernate.c3p0.idle_test_period">2000</property>
        <!-- 数据库连接池中连接对象在多长时间没有使用过后,就应该被销毁 -->
        <property name="hibernate.c3p0.timeout">2000</property>
        
        <!-- 指定关联的 hbm.xml  -->
        <mapping resource="com/cfox/hibernate/Student.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

下面就以上面这个简单的为例,对 hibernate.cfg.xml 的常用属性进行说明:

数据库配置()

<!-- 配置数据库链接 -->
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://127.0.0.1:3306/hibernate_db?useUnicode=true&characterEncoding=UTF-8</property>

方言(dialect)

dialect:配置数据库的方言,根据底层的数据库不同产生不同的 sql 语句,Hibernate 会针对数据库的特性在访问时进行优化

方言在 hibernate-release-5.1.10.Final\hibernate-release-5.1.10.Final\project\etc\文件夹下hibernate.properties 文件中,里面有各种数据库的方言。

<!-- 设置方言 -->
<property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>

show_sql

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

<!-- 是否在控制台打印SQL -->
<property name="show_sql">true</property>

format_sql

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

<!-- 是否对SQL 进行格式化 -->
<property name="format_sql">true</property>

hbm2ddl.auto: 该属性可帮助程序员实现正向工程, 即由 java 代码生成数据库脚本, 进而生成具体的表结构 。

取值 create | update | create-drop | validate

<!-- 指定自动生成数据库的策略 -->
<property name="hbm2ddl.auto">update</property>

c3p0 配置项说明

hibernate.jdbc.fetch_size

实质是调用 Statement.setFetchSize() 方法设定 JDBC 的 Statement 读取数据的时候每次从数据库中取出的记录条数。

hibernate.jdbc.batch_size

设定对数据库进行批量删除,批量更新和批量插入的时候的批次大小,类似于设置缓冲区大小的意思。batchSize 越大,批量操作时向数据库发送sql的次数越少,速度就越快。

上一篇 下一篇

猜你喜欢

热点阅读