`

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-mapping package="com.test.hibernate">

  <class name="News" table="news_table">

    <id name="id">

      <generator class="identity"/>

    </id>

    <property name="title" not-null="true" type="string"/>

    <property name="content" type="string"/>

    <!--property  name="fullContent" 

              formula="(select concat(nt.title,nt.content) from news_table nt where nt.id=id)"></property -->

    <property   name="fullContent" 

                column="full_content" type="string" 

                generated="insert"></property>

  </class>

</hibernate-mapping>

 

1. 主要元素配置

    hibernate-mapping 有各种属性(P389),class也有各种属性(P390).

    

    class里面也可以配置hibernate-mapping表示覆盖配置.

    

    hibernate-mapping里面可以包含多个class,但是一般一个文件只配置一个class(表).

    

    class里面id配置标识属性,其他使用property配置.

    

    id和property都有各种 属性值可配置(P392)

 

2. id的生成器配置

    <id name="id">

      <generator class="identity"/>

    </id>

    

    上面主键配置中,generator表示主键生成器(P392).

    

3. property元素的属性配置(p394)

 

   其中,generated熟悉配置该字段是否由数据库自动生成(通过触发器生成)

   配置值为never:不由数据库生成

   insert: insert时有数据库生成

   always:insert和udpate时都由数据库生成.

   配置的类中,在generated配置的值insert时,持久化类中对应的属性值不会插入到数据库中.

   在配置的值为always时,持久化类中对应的属性值 不会 被insert/update到数据库.

   

4. 映射集合属性

 

   Hibernate要求,之久话集合字段必须声明为 接口.

   

   在配置映射文件时,可以使用list,set,map,array等元素(相当于代替普通的property元素),

   来配置集合映射.

   这些元素可以有下面的属性:

   table 指定保存集合属性值的表名,如果没有指定该值,则表名和name相同.

   column:指定外键的列名

   on-delete指定外键约束是否打开数据库级别的级联删除.

   property-ref:指定外键引用的字段是否为原表的主键.

   update:指定外键列是否可更新

   unique:指定外键列是否具有唯一约束

   其他参考(P398)

 

5. 映射组件

 

  <!-- 组件,表示一个字段是由一个对象表示,这个对象包含几个字段,这些字段都是主表的字段 -->

    <component name="fullName" class="FullName" unique="false">

      <parent name="owner" />

      <property name="first" />

      <property name="last" />

      <!-- 组件的字段为集合(Map) -->

      <map name="power" table="name_power">

        <key  column="person_id" not-null="true" />

        <map-key column="name_aspect" type="string" />

        <element column="name_power" type="int" /> 

      </map>

    </component>

    

7. 映射集合,该集合的 元素 为 组件,元素数据来自集合的表,组件字段是集合表中的.

   普通map中一个key对应一个字段,而使用组件作为元素,则一个key可以对应多个字段.

 

  <!-- 集合的元素 为 组件 -->

    <map name="nicks" table="nick_inf">

      <key column="person_id" not-null="true" />

      <map-key column="phase" type="string" />

      <!-- 集合的元素 为 组件 -->

      <!-- 为简化管理,Hibernate不再允许composite-element 里面再包含list,map,set等集合元素 -->

      <composite-element class="FullName">

        <parent name="owner" />

        <property name="first" />

        <property name="last" /> 

      </composite-element>

    </map>

   

8.  映射集合,该集合的 key 为 组件,  使用 composite-map-key

    组件字段是集合表中的.

 

   <!-- 集合的key为组件, -->

    <map name="nickPower" table="nick_power">

      <key column="person_id" not-null="true" />

      <!-- 因为使用组件作为key,这里必须用这个composite-map-key标签 -->

      <composite-map-key class="FullName">

        <!-- 映射作为key的组件的 字段 -->

        <key-property name="first" type="string" />

        <key-property name="last" type="string" />

      </composite-map-key>

      <element column="nick_power" type="int" />    

    </map>

    

9. 组件作为复合主键

  

   此时,组件必须满足:

   (1) 实现 java.io.serializable接口

   (2) 需要正确重写equals()和hashCode()方法

   

   一个映射配置中,id和composite-id只能出现一次(因为一个表只能有一个主键)

   

   <!-- 组件作为复合主键 -->

    <composite-id name="myCompostieKey" class="CompositeKey">

      <!-- key1,key2为两个列,在这两个列上生成符合主键,用这两个列构造CompositeKey对象 -->

      <key-property name="key1" type="int" /> 

      <key-property name="key2" type="string" /> 

    </composite-id >

分享到:
评论

相关推荐

    生成hibernate映射文件工具

    `生成hibernate映射文件工具`是为了简化这一过程而设计的,它自动根据数据库的表结构生成对应的Hibernate映射文件,极大地提高了开发效率。 首先,我们需要理解Hibernate的核心概念。Hibernate是一个优秀的Java ORM...

    Hibernate 映射文件自动生成

    【压缩包子文件的文件名称列表】:“hibernate映射文件自动生成.doc”很可能是这篇博文的文档形式,其中详细介绍了具体的操作步骤、使用工具或者自定义脚本,以帮助开发者理解并应用自动化的映射文件生成过程。...

    myeclipse自动生成hibernate映射文件

    Hibernate映射文件是XML格式的文件,它定义了数据库表与Java实体类之间的对应关系,包括字段映射、主键策略、关联关系等。映射文件让开发者无需编写SQL语句,就能通过Java对象进行数据库操作。 2. **MyEclipse ...

    java根据实体类生成Hibernate映射文件

    首先,我们需要了解Hibernate映射文件的基本结构。通常,一个映射文件以`.hbm.xml`为扩展名,它使用XML格式来描述Java类和数据库表的对应关系。映射文件包含了类名、表名、字段及其数据类型等信息。例如: ```xml ...

    Hibernate映射笔记

    #### Hibernate映射文件结构 1. **DTD声明**:映射文件的头部会包含DTD声明,确保文件遵循正确的DTD规范。例如: ```xml &lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" ...

    hibernate实体映射文件字段设置默认值

    首先,我们需要了解一个基本的Hibernate映射文件结构: ```xml &lt;hibernate-mapping&gt; &lt;!-- 映射类的属性 --&gt; &lt;/hibernate-mapping&gt; ``` 这里的`&lt;class&gt;`标签表示映射到特定的Java类,其属性`name`指定了对应的...

    Hibernate映射树形结构

    标题“Hibernate映射树形结构”指的是如何用Hibernate来存储和操作具有层级关系的数据。 1. **单表映射策略**: Hibernate可以使用单个表来存储树形结构,通过一个自增的`id`字段以及一个表示父节点的`parent_id`...

    hibernate映射文件生成数据库

    Hibernate映射文件,通常以`.hbm.xml`为扩展名,是Hibernate用来定义Java类与数据库表之间关系的配置文件。它包含了关于实体类与数据库表的字段对应、主键生成策略、关联关系等信息。通过这些映射文件,Hibernate...

    深入理解hibernate映射文件

    #### Hibernate映射文件结构解析 Hibernate映射文件是连接Java对象与数据库表的关键,它定义了对象与数据库表之间的映射关系。映射文件的根元素是`&lt;hibernate-mapping&gt;`,该元素可以拥有多个`&lt;class/&gt;`子元素,每个...

    用MyEclipse自动生成hibernate映射文件和实体类

    3. **逆向工程(Hibernate Reverse Engineering)**:选中要映射的数据库表,右键选择`Hibernate Reverse Engineering`,这是MyEclipse提供的将数据库表转换为Hibernate映射文件和实体类的工具。 4. **配置生成选项...

    MyEclipse自动生成hibernate映射文件

    ### MyEclipse自动生成Hibernate映射文件 #### 一、概述 在开发基于Java的Web应用时,ORM(对象关系映射)框架如Hibernate能够极大地提高数据持久化的效率及便捷性。MyEclipse是一款功能强大的集成开发环境,支持...

    Hibernate映射实例

    确保数据库与Hibernate映射文件一致,能正确地反映实体之间的关系。导入DBO到SQL Server数据库后,就可以通过Hibernate的Session接口进行CRUD(创建、读取、更新、删除)操作了。 在开发过程中,理解并熟练运用这些...

    Hibernate映射集合属性List

    本文将详细探讨如何使用Hibernate映射集合属性List,以及如何让Hibernate自动创建对应的数据库表,无需手动编写SQL语句。 首先,我们需要理解Hibernate的映射机制。Hibernate通过ORM(对象关系映射)技术将Java对象...

    IntelliJ IDEA下自动生成Hibernate映射文件以及实体类

    IntelliJ IDEA下自动生成Hibernate映射文件以及实体类 IntelliJ IDEA是一款功能强大的集成开发环境(IDE),它提供了许多实用的功能来提高开发效率。其中一个非常有价值的功能是自动生成Hibernate映射文件和实体类...

    hibernate array 数组映射

    在Hibernate的映射文件(hbm.xml)中,我们可以使用`&lt;array&gt;`元素来配置数组映射。基本结构如下: ```xml ``` - `name`:指定Java对象中对应属性的名称。 - `type`:指定数组元素的类型,可以是基本类型,...

    Hibernate继承映射代码

    这些代码可能包括实体类定义、映射文件(如.hbm.xml或使用注解的类)、Hibernate配置文件(hibernate.cfg.xml)以及C3P0的配置部分。通过对这些代码的学习和分析,我们可以更深入地理解如何在实际项目中运用这些技术...

Global site tag (gtag.js) - Google Analytics