SSH与SSM学习之hibernate02——ORM配置详解

SSH与SSM学习之hibernate02——ORM配置详解

一、我们的ORM配置文件

<?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.qwm.hilbernate01.User">
        <id name="id">
            <!--id自增-->
            <generator class="increment"></generator>
        </id>
        <property name="name"/>
        <property name="age"/>
    </class>
</hibernate-mapping>

二、根元素

<!-- 配置表与实体对象的关系 -->
<!-- package属性:填写一个包名.在元素内部凡是需要书写完整类名的属性,可以直接写简答类名了. -->
<hibernate-mapping package="com.qwm.hilbernate01">
....
</hibernate-mapping>

原来的配置文件就可以改为

....

<!-- 配置表与实体对象的关系 -->
<!-- package属性:填写一个包名.在元素内部凡是需要书写完整类名的属性,可以直接写简答类名了. -->
<hibernate-mapping package="com.qwm.hilbernate01">
    <class name="User">
       .....
    </class>
</hibernate-mapping>

三、class元素

<!--
    class元素: 配置实体与表的对应关系的
    name: 完整类名
    table:数据库表名
   -->
<class name="User" table="tb_user1">
....
</class>

四、id元素

<!--
   id元素:配置主键映射的属性
        name: 填写主键对应属性名(类中的属性)
        column(可选): 填写表中的主键列名.默认值:列名会默认使用属性名
        type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
                每个类型有三种填法: java类型|hibernate类型|数据库类型
        not-null(可选):配置该属性(列)是否不能为空. 默认值:false
        length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
 -->
<id name="id">
    <!--id自增-->
    <!-- generator:主键生成策略 -->
    <generator class="increment"></generator>
</id>

五、主键生成策略

<!--
   id元素:配置主键映射的属性
        name: 填写主键对应属性名(类中的属性)
        column(可选): 填写表中的主键列名.默认值:列名会默认使用属性名
        type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
                每个类型有三种填法: java类型|hibernate类型|数据库类型
        not-null(可选):配置该属性(列)是否不能为空. 默认值:false
        length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
 -->
<id name="id">
    <!--id自增-->
    <!-- generator:主键生成策略 -->
    <!-- generator:主键生成策略.就是每条记录录入时,主键的生成规则.(7个)
            identity :  主键自增.由数据库来维护主键值.录入时不需要指定主键.
            sequence:   Oracle中的主键生成策略.
            increment:  主键自增.由hibernate来维护.每次插入前会先查询表中id最大值.+1作为新主键值.
            hilo:       高低位算法.主键自增.由hibernate来维护.开发时不使用.
            native:     hilo+sequence+identity 自动三选一策略.
            uuid:       产生随机字符串作为主键. 主键类型必须为string 类型.
            assigned:   自然主键生成策略. hibernate不会管理主键值.由开发人员自己录入.
    -->
    <generator class="increment"></generator>
</id>

六、property元素

<!--
  property元素:除id之外的普通属性映射
        name: 填写属性名
        column(可选): 填写列名
        type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
                每个类型有三种填法: java类型|hibernate类型|数据库类型
        not-null(可选):配置该属性(列)是否不能为空. 默认值:false
        length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
-->
<property name="name"/>

七、完整的配置说明

<?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">

<!-- 配置表与实体对象的关系 -->
<!-- package属性:填写一个包名.在元素内部凡是需要书写完整类名的属性,可以直接写简答类名了. -->
<hibernate-mapping package="com.qwm.hilbernate01">
    <!--
        class元素: 配置实体与表的对应关系的
        name: 完整类名
        table:数据库表名
       -->
    <class name="User" table="tb_user1">
        <!--
           id元素:配置主键映射的属性
                name: 填写主键对应属性名(类中的属性)
                column(可选): 填写表中的主键列名.默认值:列名会默认使用属性名
                type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
                        每个类型有三种填法: java类型|hibernate类型|数据库类型
                not-null(可选):配置该属性(列)是否不能为空. 默认值:false
                length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
         -->
        <id name="id">
            <!--id自增-->
            <!-- generator:主键生成策略 -->
            <!-- generator:主键生成策略.就是每条记录录入时,主键的生成规则.(7个)
                    identity :  主键自增.由数据库来维护主键值.录入时不需要指定主键.
                    sequence:   Oracle中的主键生成策略.
                    increment:  主键自增.由hibernate来维护.每次插入前会先查询表中id最大值.+1作为新主键值.
                    hilo:       高低位算法.主键自增.由hibernate来维护.开发时不使用.
                    native:     hilo+sequence+identity 自动三选一策略.
                    uuid:       产生随机字符串作为主键. 主键类型必须为string 类型.
                    assigned:   自然主键生成策略. hibernate不会管理主键值.由开发人员自己录入.
            -->
            <generator class="increment"></generator>
        </id>
        <!-- property元素:除id之外的普通属性映射
                name: 填写属性名
                column(可选): 填写列名
                type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.
                        每个类型有三种填法: java类型|hibernate类型|数据库类型
                not-null(可选):配置该属性(列)是否不能为空. 默认值:false
                length(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度
         -->
        <property name="name"/>
        <property name="age"/>
    </class>
</hibernate-mapping>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值