zoukankan      html  css  js  c++  java
  • Hibernate —— Hibernate 配置文件

    1.Hibernate 配置文件主要用于配置**数据库连接**和 Hibernate 运行时所需的**各种属性**。

    2.每一个 Hibernate 配置文件对应一个 Configuration 对象,从前一篇文章知道,可以通过 Configuration 的 configure() 方法来读取 Hibernate 的配置文件,默认读取 `hibernate.cfg.xml`。

    3.配置数据库连接的基本信息,在 <session-factory> 节点内配置。

    (1)JDBC 连接属性

    <property name="connection.username">root</property>
    <property name="connection.password">123456</property>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>

    (2)使用 C3p0 数据源

    ①导入 Jar 包

    ②配置

    <!-- 配置最大连接数 -->
    <property name="c3p0.max_size">20</property>
    <!-- 配置最小连接数 -->
    <property name="c3p0.min_size">5</property>
    <!-- 缓存 statement 对象 -->
    <property name="c3p0.max_statements">10</property>
    <!-- 连接池中连接耗尽时,向数据库一次要多少个连接 -->
    <property name="c3p0.acquire_increment">10</property>
    <!-- 超时时间 -->
    <property name="c3p0.timeout">2000</property>
    <!-- 检测线程每隔多长时间检测一次池内所有连接是否超时 -->
    <property name="c3p0.idle_test_period">2000</property>

    (3)数据库方言的配置

    <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>

    tip: Mysql 的 InnoDB 引擎在进行数据操作时,会进行锁行,而不是锁表。在高并发的情况下,使用 InnoDB 引擎较好。

    4.常用属性

    (1)是否打印 sql,取值 true/false

    <property name="show_sql">true</property>

    (2)打印的 sql 是否进行格式化,取值 true/false

    <property name="format_sql">true</property>

    5.建表策略

    <property name="hbm2ddl.auto">update</property>

    取值: create|upadte|create-drop|validate

    (1)create 不论是否更改了表结构,每次都重新创建表。

    (2)upadte 只有在更改了表结构的前提下,才会去更新表,但是不会删除已有的数据。

    (3)create-drop 回根据 hibernate.cfg.xml 文件生成表,但是 SessionFactory 一关闭,表就自动删除。

    (4)validate 会和数据库中的表进行比较,若 hibernate.cfg.xml 文件中的列在数据表中不存在,则抛出异常。

    6.jdbc.fetch_size 和 jdbc.batch_size (Mysql 不支持

    (1)hibernate.jdbc.fetch_size:实质是调用 Statement.setFetchSize() 方法,设定 JDBC 的 statement 读取数据时,每次从数据库中取出的记录的条数。

    Oracle 支持 Fetch Size 特性,当 fetchSize = 100 的时候,性能最好。

    (2)hibernate.jdbc.batch_size:设定对数据库进行批量删除、批量更新、批量插入的时候的批次大小。

    Oracle 数据库 batchSize =30 的时候比较合适。

    7. 配置 Entity.hbm.xml 文件

    <mapping resource="com/nucsoft/hibernate/News.hbm.xml"/>

    8.总结

    介绍了 Hibernate 配置文件,包括基本配置与 Hibernate 本身的配置。

    补充:

    hibernate.cfg.xml 配置文件:

    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
            <!-- 配置连接数据库的基本信息 -->
            <property name="connection.username">root</property>
            <property name="connection.password">123456</property>
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
            <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
    
            <!-- 配置c3p0 数据源信息 -->
            <!-- 配置最大连接数 -->
            <property name="c3p0.max_size">20</property>
            <!-- 配置最小连接数 -->
            <property name="c3p0.min_size">5</property>
            <!-- 缓存 statement 对象 -->
            <property name="c3p0.max_statements">10</property>
            <!-- 连接池中连接耗尽时,向数据库一次要多少个连接 -->
            <property name="c3p0.acquire_increment">10</property>
            <!-- 超时时间 -->
            <property name="c3p0.timeout">2000</property>
            <!-- 检测线程每隔多长时间检测一次池内所有连接是否超时 -->
            <property name="c3p0.idle_test_period">2000</property>
    
            <!-- 配置 Hibernate 的基本信息 -->
            <property name="show_sql">true</property>
            <property name="format_sql">true</property>
    
            <!-- 指定自动生成数据表的策略 -->
            <property name="hbm2ddl.auto">update</property>
    
            <!-- mysql 不支持此特性 -->
            <property name="hibernate.jdbc.batch_size">30</property>
            <!-- mysql 不支持此特性 -->
            <property name="hibernate.jdbc.fetch_size">100</property>
    
            <!-- 需要关联的 Entity.hbm.xml -->
            <mapping resource="com/nucsoft/hibernate/News.hbm.xml"/>
        </session-factory>
    </hibernate-configuration>
  • 相关阅读:
    MP3 Lame 转换 参数 设置(转)
    数据库SQL优化大总结之 百万级数据库优化方案(转)
    IndexedDB:浏览器里内置的数据库(转)
    【译】微型ORM:PetaPoco【不完整的翻译】(转)
    'NoneType' object has no attribute '__getitem__'
    关于python的整形(int)自动转长整形(long)的问题
    1-redis使用笔记
    Flask deployment on gunicorn with flask script
    Celery从入门到放弃
    SELECT中的CAST
  • 原文地址:https://www.cnblogs.com/solverpeng/p/5941471.html
Copyright © 2011-2022 走看看