JavaWeb学习:Hibernate的配置

Hibernate配置

一、映射的配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <!-- 
        以上规约内容是 hibernate-core-5.x.Final.jar包中
        org.hibernate => hibernate-mapping-3.0.dtd(或hibernate-mapping-5.0.dtd) 
    -->
<hibernate-mapping>
<!-- 建立类与表的映射 -->
<class name="com.marw.util.Customer" table="cst_customer">
    <!-- 建立类中的属性与表中的主键对应 -->
    <id name="cust_id" column="cust_id">
        <generator class="native"></generator>
    </id>
    
    <!-- 建立类中的普通属性与表中的字段对应 -->
    <property name="cust_name" column="cust_name"></property>
    <property name="cust_source" column="cust_source"></property>
    <property name="cust_industry" column="cust_industry"></property>
    <property name="cust_level" column="cust_level"></property>
    <property name="cust_phone" column="cust_phone"></property>
    <property name="cust_mobile" column="cust_mobile"></property>
</class>
</hibernate-mapping>

1、class标签的配置:标签用来建立类与表的映射关系

  属性:

    name                                    :类的全路径

    table                                     :表名(类名与表名一致,table可以省略)

    catalog                                 :数据库名

2、id标签的配置:标签用来建立类中的属性与表中的主键的对应关系

  属性:

    name                                    :类中的属性名

    column                                 :表中的字段名(类中的属性名和表中的字段名如果一致,column可以省略)

    length                                   :长度

    type                                       :类型

  2.1、<generator class="native"></generator> Hibernate主键策略

    incrament:hibernate中提供的自增长机制,主键类型:short、int、long,单线程程序中使用

      其原理:先发送一条sql语句:select max(主键) form 表;最大主键+1作为下一条记录的主键

    identity:使用数据库自增长机制,主键类型:short、int、long,只有MSSQL、MySQL数据库可以使用Oracle没有自增长机制

    sequence:序列方式,主键类型:short、int、long,Oracle支持序列,MySQL不支持sequence

    uuid:hiberna中随机生成字符串,主键类型:字符串

    native:本地策略,可以在identity和sequence之间自动切换

    assigned:hibernate放弃主键的管理,需要通过手动设置

    foreign:外部的,一对一的一种关联映射的情况下使用

3、property标签的配置:标签用来建立类中的普通属性与表的字段的对应关系

  属性:

    name                                    :类中的属性名

    column                                 :表中的字段名

    length                                   :长度

    type                                       :类型

    not-null                                 :设置非空

    unique                                  :设置唯一

二、Hibernate数据库配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <!-- 
        以上规约内容是 hibernate-core-5.x.Final.jar包中
        org.hibernate => hibernate-configuration-3.0.dtd 
    -->
<hibernate-configuration>
    <session-factory>
        <!-- 连接数据库基本参数 -->
        <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
        <property name="hibernate.connection.url">jdbc:sqlserver://localhost:1433;databaseName=HibernateDB;</property>
        <property name="hibernate.connection.username">sa</property>
        <property name="hibernate.connection.password">AAA@111</property>
        
        <!-- 配置Hibernate的方言 -->
        <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
        <!-- 可选配置start -->
        <!-- 控制台打印sql语句 -->
        <property name="hibernate.show_sql">true</property>
        <!-- 控制台打印sql语句 格式化-->
        <property name="hibernate.format_sql">true</property>
        <!-- 可选配置end -->
        
        <!-- 配置映射 -->
        <mapping resource="com/marw/util/Customer.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

1、必须配置

  ①、数据库连接基本参数

    驱动类

    url路径

    用户名

    密码

  ②、方言

  ③、映射文件的引入

2、可选配置

  控制台显示SQL   :hibernate.show_sql

  格式化显示SQL  :hibernate.format_sql

  自动建表                   :hibernate.hbm2ddl.auto  

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

    none                                      :不使用hibernate的自动建表

    create                                   :如果数据库中已经有表,删除原有表,重新创建,如果没有表,新建表。(测试)

    create-drop      :如果数据库中已经有表,删除原有表,执行操作,删除这个表。如果没有表,新建一个,使用完了删除该表。(测试)

    update                                 :如果数据库中有表,使用原有表,如果没有表,创建新表(更新表结构)

    validate                                :如果没有表,不会创建表。只会使用数据库中原有的表。(校验映射和表结构)

   

原文地址:https://www.cnblogs.com/WarBlog/p/13920985.html