zoukankan      html  css  js  c++  java
  • 02.Hibernate配置文件之映射配置文件

    映射文件,即xxx.hbm.xml的配置文件

    <class>标签:用来将类与数据库表建立映射关系

      属性:

        name:类中的全路径

        table:表名(如果类与表名一致,那么table属性可以省略)

        catalog:数据库的名称(一般不需要写)

      子标签:  

        <id>标签:用来将类中的属性和表中的主键建立映射,id就是用来配置主键的.

          属性:

            name:类中的属性名

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

            length:数据的长度。(如果数据库建立好了,可以不写;如果没创建好,生成表结构是,length最好指定)

          主键的类型和生成策略在文章后面介绍

        <property>标签:将类中的属性与表中的字段建立映射

          属性:

            name:类中的属性名

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

            length:数据的长度

            type:数据类型(一般不需要写)

              Hibernate的数据类型:type="string"

              Java的数据类型:type="Java.lang.String"

              数据库字段的数据类型:<column name="xxx" sql-type="varchar"/>

    <?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-mapping>
    
        <!-- 配置类和表结构的映射 -->
        <class name="com.hibernateday1.domain.Customer" table="cst_customer" catalog="hibernate_day01">
            
            <!-- 配置id
                name:JavaBean的属性
                column:表结构的字段
             -->        
            <id name="cust_id" column="cust_id">
                <!-- 主键的生成策略 -->
                <generator class="native"/>
            </id>
            
            <!-- 配置其他属性 -->
            <property name="cust_name">
                <column name="cust_name" sql-type="varchar"/>
            </property>
            <property name="cust_user_id" column="cust_user_id" />
            <property name="cust_create_id" column="cust_create_id" />
            <property name="cust_source" column="cust_source" type="string"/>
            <property name="cust_industry" column="cust_industry" type="java.lang.String"/>
            <property name="cust_level" column="cust_level"/>
            <property name="cust_linkman" column="cust_linkman"/>
            <property name="cust_phone" column="cust_phone"/>
            <property name="cust_mobile" column="cust_mobile"/>
        </class>
    
    </hibernate-mapping>

    主键的类型

    • 自然主键:对象本身的一个属性作为主键。
    • 代理主键:为对象单独创建一个字段,最为主键。(开发中推荐的使用方式)

    主键的生成策略

    • 1.increment :适用于short,int,long作为主键

        不是使用的数据库自动增长机制,Hibernate提供的一种增长机制

        当前数据库最大值+1作为新纪录的主键

        问题:不能再并发访问个集群情况下使用

    • 2.indentity:适用于short,int,long作为主键,但是必须使用在有自动增长的数据库中,采用的是数据库底层的增长机制

        底层使用的是数据库的增长机制(auto_increment),想Oracle数据库没有自动增长机制

    • 3.sequence:适用于short,int,long作为主键,底层使用的是序列的增长方式

        Oracle实现自动增长,需要使用序列

    • 4.uuid适用于char,varchar类型作为主键

        使用随机的字符串作为主键

    • 5.native本地策略,根据底层数据库的不同,自动选择适合该数据库的生成策略(short,int,long)

        MySQL:indentity

        Oracle:sequence

    • 6.assigned:主键生成不要Hibernate管理,必须手动设置主键
  • 相关阅读:
    UIView的clipsToBounds属性,layoutSubViews及触摸事件传递(默认情况下)总结
    ISO中运行时简单使用及KVC补充
    IOS中UISearchBar的使用
    oc的block
    oc的协议(protocol)
    oc的分类category
    oc内存的理解
    oc笔记(转载)
    oc对象中属性总结
    servlet,struts1,struts2,spring
  • 原文地址:https://www.cnblogs.com/NEWHOM/p/6757652.html
Copyright © 2011-2022 走看看