zoukankan      html  css  js  c++  java
  • Hibernate 主配置文件详解

    摘要: 版权声明:本文为博主原创文章,如需转载请标注转载地址。

    博客地址:http://www.cnblogs.com/caoyc/p/5595870.html

    一、主配置文件命名规则

      1、默认名称:hibernate.cfg.xml

      2、默认路径:src根目录。在编译后也是类的根目录

      Question:在程序中如何加载主配置文件呢?

      Answer: new Configuration().configure()

      当然我们一般建议使用默认名称和默认路径,也就是说名称可以更改,路径也可以更改。

      Question:我们更改主配置文件名称或路径后如何来加载呢?

      Answer:我们知道对于Configuration类中的configure有几个重载方法,起返回值也同样是Configuration对象

          Configuration configure() :加载默认名称和默认路径的主配置文件

          Configuration configure(String resource) :可以加载指定位置的配置文件(在本项目中)

          Configuration configure(File configFile) :这里可以加载本地的配置文件(在本地计算机中)

          Configuration configure(URL url) :可以加载互联网上的配置文件

    二、一个简单的hibernate.cfg.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE hibernate-configuration PUBLIC
     3     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
     4     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
     5     
     6 <hibernate-configuration>
     7 <session-factory name="mysqldb">
     8     
     9     <!-- 配置方言:选择数据库类型 -->
    10     <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    11     
    12     <!-- 配置数据库连接信息 -->
    13     <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    14     <property name="connection.url">jdbc:mysql:///test?characterEncoding=utf8</property>
    15     <property name="connection.username">root</property>
    16     <property name="connection.password">123456</property>
    17     
    18     <!-- 允许显示sql语句 -->
    19     <property name="show_sql">true</property>
    20     <!-- 导入映射文件 -->
    21     <mapping resource="com/mypro/domain/Person.hbm.xml" />
    22 </session-factory>
    23 </hibernate-configuration>

     

    三、知识点介绍

    1、定义xml版本和编码方式

    1 <?xml version="1.0" encoding="UTF-8"?>

    2、表明解析本XML文件的DTD文档位置,DTD是DocumentType Definition 的缩写,  即文档类型的定义,XML解析器使用DTD文档来检查XML文件的合法性。 

    1 <!DOCTYPE hibernate-configuration PUBLIC
    2     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    3     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

    Question:如何再到DTD的声明?

    Answer:在hibernate-core-5.2.0.Final.jar下org.hibernate包中,你可以找到相应的扩展名为.dtd的文件,如图

    这里有hibernate-configuration的dtd还有hibernate-mapping的dtd,我们打开hibernate-configuration-3.0.dtd文件

    3、<property name="dialect">

    该标签用来指定数据库的类型,这里我们可以这样写<property name="hibernate.dialect"> 所有property标签的name属性都可以加上hibernate,也可以不加

    1 <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 指定数据库类型为Mysql -->
    2 <property name="dialect">hibernate.dialect org.hibernate.dialect.OracleiDialect</property> <!-- 指定数据库类型为Oracle -->
    3 <property name="dialect">hibernate.dialect org.hibernate.dialect.SQLServerDialect</property> <!-- 指定数据库类型为Sql Server -->

    我们可以在下载的开发包中找到hibernate-release-5.2.0.Finalprojectetc下面的hibernate.properties

     1 ## MySQL
     2 
     3 #hibernate.dialect org.hibernate.dialect.MySQLDialect
     4 #hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect
     5 #hibernate.dialect org.hibernate.dialect.MySQLMyISAMDialect
     6 #hibernate.connection.driver_class com.mysql.jdbc.Driver
     7 #hibernate.connection.url jdbc:mysql:///test
     8 #hibernate.connection.username gavin
     9 #hibernate.connection.password
    10 
    11 
    12 ## Oracle
    13 
    14 #hibernate.dialect org.hibernate.dialect.Oracle8iDialect
    15 #hibernate.dialect org.hibernate.dialect.Oracle9iDialect
    16 #hibernate.dialect org.hibernate.dialect.Oracle10gDialect
    17 #hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver
    18 #hibernate.connection.username ora
    19 #hibernate.connection.password ora
    20 #hibernate.connection.url jdbc:oracle:thin:@localhost:1521:orcl
    21 #hibernate.connection.url jdbc:oracle:thin:@localhost:1522:XE

    4、<property name="connection.driver_class">:配置数据库驱动

    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>

    5、<property name="connection.url">:配置数据库的url

    <property name="connection.url">jdbc:mysql:///test?characterEncoding=utf8</property>

    6、<property name="connection.username">:配置数据库登录名

    <property name="connection.username">root</property>

    7、<property name="connection.password">:配置数据库登录密码

    <property name="connection.password">123456</property>

    8、<property name="hibernate.hbm2ddl.auto"> 

      该属性有4个值

      a、create-drop:表示在hebarinate初始化时创建表格,程序运行结束的时候会删除相应的表格,在实际项目中不用

      b、create:在hibernate初始化时会创建表格,在运行结束之后不删除表格,而是在下一次运行的时候如果有旧的先删掉再创建,没有旧的,直接创建

      c、update:加载hibernate自动更新数据库结构,如果没有表,则创建,如果有,且有更新,则直接更新,没有更新,则不变化

      d、校验映射文件和数据库中的表是不是能对应起来,不能对应报错,实际中常用

      总之请慎重使用此参数,没必要就不要随便用。

    9、其它

     1 <!-- 允许显示sql语句 -->
     2 <property name="show_sql">true</property>
     3 <!-- 格式化sql语句 -->
     4 <property name="format_sql">true</property>
     5 <!-- 设置连接池大小 -->
     6 <property name="connection.pool.size">20</property>  
     7 <!--jdbc.fetch_size是指Hibernate每次从数据库中取出并放到JDBC的Statement中的记录条数。FetchSize设的越大,读数据库的次数越少,速度越快,Fetch Size越小,读数据库的次数越多,速度越慢-->  
     8 <property name="jdbc.fetch_size">50</property>  
     9 <!--jdbc.batch_size是指Hibernate批量插入,删除和更新时每次操作的记录数。BatchSize越大,批量操作的向数据库发送Sql的次数越少,速度就越快,同样耗用内存就越大-->  
    10 <property name="jdbc.batch_size">23</property>  
    11  <!--connection.useUnicode连接数据库时是否使用Unicode编码-->  
    12 <property name="Connection.useUnicode">true</property>
    13 <!--connection.characterEncoding连接数据库时数据的传输字符集编码方式-->  
    14 <propertynamepropertyname="connection.characterEncoding">gbk</property>
  • 相关阅读:
    android 颜色值参考,(有颜色图
    Virtual address cache memory, processor and multiprocessor
    VUEJS2.0源码理解--优
    qlserver、Mysql、Oracle三种数据库的优缺点总结
    三层与MVC
    数据结构 常用定义
    c语言 typedef
    C动态内存分配
    c 指针(一)
    stdlib 头文件
  • 原文地址:https://www.cnblogs.com/caoyc/p/5595870.html
Copyright © 2011-2022 走看看