`

hibernate的表结构以及表之间的关系的 *.hbm.xml

    博客分类:
  • J2EE
阅读更多

假设有一个实体类,用于存放用户信息,其定义如下:

java 代码
  1. package events;   
  2. import java.util.*;   
  3. public class Person {   
  4.     private Long id;   
  5.     private int age;   
  6.     private String firstname;   
  7.     private String lastname;   
  8.     public Person() {}   
  9.   
  10.     public Long getId() {   
  11.         return id;   
  12.     }   
  13.     public void setId(Long id) {   
  14.         this.id = id;   
  15.     }   
  16.     public int getAge() {   
  17.         return age;   
  18.     }   
  19.     public void setAge(int age) {   
  20.         this.age = age;   
  21.     }   
  22.     public String getFirstname() {   
  23.         return firstname;   
  24.     }   
  25.     public void setFirstname(String firstname) {   
  26.         this.firstname = firstname;   
  27.     }   
  28.     public String getLastname() {   
  29.         return lastname;   
  30.     }   
  31.     public void setLastname(String lastname) {   
  32.         this.lastname = lastname;   
  33.     }   
  34.   
  35.     private Set emailAddresses = new HashSet();   
  36.     public Set getEmailAddresses() {   
  37.         return emailAddresses;   
  38.     }   
  39.     public void setEmailAddresses(Set emailAddresses) {   
  40.         this.emailAddresses = emailAddresses;   
  41.     }   
  42.   
  43.     private Set events = new HashSet();   
  44.     // Defensive, convenience methods   
  45.     protected Set getEvents() {   
  46.         return events;   
  47.     }   
  48.     protected void setEvents(Set events) {   
  49.         this.events = events;   
  50.     }   
  51.     public void addToEvent(Event event) {   
  52.         this.getEvents().add(event);   
  53.         event.getParticipants().add(this);   
  54.     }   
  55.     public void removeFromEvent(Event event) {   
  56.         this.getEvents().remove(event);   
  57.         event.getParticipants().remove(this);   
  58.     }   
  59. }   

 
则相应的描述POJO--->Person.hbm.xml中的配置信息如下:

xml 代码
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC   
  3.         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"   
  4.         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5. <hibernate-mapping>  
  6.     <class name="events.Person" table="PERSON">  
  7.         <id name="id" column="PERSON_ID">  
  8.             <generator class="identity" />  
  9.         </id>  
  10.         <property name="age" />  
  11.         <property name="firstname" />  
  12.         <property name="lastname" />  
  13.         <set name="events" table="PERSON_EVENT">  
  14.             <key column="PERSON_ID" />  
  15.             <many-to-many column="EVENT_ID" class="events.Event" />  
  16.         </set>  
  17.         <set name="emailAddresses" table="PERSON_EMAIL_ADDR">  
  18.             <key column="PERSON_ID" />  
  19.             <element type="string" column="EMAIL_ADDR" />  
  20.         </set>  
  21.     </class>  
  22. </hibernate-mapping>  


table: 类对应表名,默认为类名称

dynamic-update: 生成更新字段时,只包含发生变动的字段,默认为false。

dynamic-insert: 生成insert语句时仅包含非null字段

Proxy: 代理类,默认为空

discriminator-value: 子类辨别标识用于多态支持

where: 通过限定条件查询结果集。如:查询有籍在校学生的信息可以使用"where studentstatus='0'"
 

2.id节点
1.column               字段名称
2.type                 字段类型
3.length               字段长度
4.unsaved-value        用于判断对象值是否已经保存
5.generator-class      主键产生方式
                       assigned
                       hilo
                       seqhilo
                       increment
                       identity
                       sequence
                       native
                       uuid.hex
                       uuid.string
                       foreign
 
3.property 节点
1.column               数据库表字段名称
2.type                 类型
3.length               长度
4.not-null             字段是否允许为空
5.unique               字段是否允许唯一(是否允许重复值)
6.insert               insert操作时,是否允许包含本字段数值
7.update               update操作时,是否包含本字段数据
 
Event.hbm.xml

xml 代码
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC   
  3.         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"   
  4.         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5. <hibernate-mapping>  
  6.  <class name="events.Event" table="EVENTS">  
  7.   <id name="id" column="EVENT_ID">  
  8.    <generator class="native" />  
  9.   </id>  
  10.   <property name="date" type="timestamp" column="EVENT_DATE" />  
  11.   <property name="title" />  
  12.   <set name="participants" table="PERSON_EVENT" inverse="true">  
  13.    <key column="EVENT_ID" />  
  14.    <many-to-many column="PERSON_ID" class="events.Person" />  
  15.   </set>  
  16.  </class>  
  17. </hibernate-mapping>  
说明:
1.class 节点
name: 类名
分享到:
评论

相关推荐

    hibernate.hbm.xml详解

    总之,`hibernate.hbm.xml`文件是Hibernate的核心配置文件,它清晰地定义了Java对象和数据库表之间的映射关系,以及主键生成策略。熟练掌握其结构和用法,能有效提高Hibernate应用的开发效率和数据管理的准确性。

    在myeclipse中根据表结构生成实体和hbm.xml文件

    Hibernate 在 MyEclipse 中根据表结构生成实体和 hbm.xml 文件 在 MyEclipse 中,我们可以使用 Hibernate 根据现有的数据库表结构生成实体和 hbm.xml 配置文件,这样可以避免手动编写 JPA 或 Hibernate 实体类。...

    利用hibernate自动生成hbm.xml文件和entity类.doc

    Hibernate 反向工程是指使用 Hibernate 工具将数据库表结构反向生成对应的 Entity 类和 hbm.xml 文件的过程。这种方法可以大大简化开发过程,提高开发效率。 二、 Hibernate 反向工程的步骤 1. 切换到 MyEclipse ...

    hibernate.cfg.xml文件

    例如,`create`表示每次启动时都创建新表,`update`则更新已有表结构,`validate`验证表结构是否匹配,`none`则不做任何操作。 6. **实体类映射**:通过`mapping resource`元素,可以指定每个实体类对应的`.hbm.xml...

    Oracle自动生成hibernate实体(.java 和.hbm.xml文件)存储过程

    关于`.hbm.xml`文件,它是Hibernate的XML映射文件,用于描述Java对象(实体类)与数据库表之间的关系。每个实体类对应一个`.hbm.xml`文件,其中包含了类名、属性名、字段类型、主键信息以及关联关系等配置。这些信息...

    hibernate。hbm.xml配置详解

    在 Hibernate 中,`hbm.xml` 文件是用于定义对象与数据库表之间映射的元数据文件。这篇文档将深入解析 `hbm.xml` 配置的各个方面。 ### 1. `hbm.xml` 文件结构 `hbm.xml` 文件的开头通常包含 XML 声明和 DTD 引用...

    Hibernate关联关系hbm.xml中的相关属性

    在Hibernate中,关联关系是对象关系映射(ORM)的核心组成部分,它允许我们将数据库的表结构映射到Java对象,并管理这些对象之间的关联。在hbm.xml文件中,我们可以使用`&lt;many-to-one&gt;`, `&lt;one-to-many&gt;`, 和 `...

    从hbm的xml文件 自动生成数据库表

    标题中的“从hbm的xml文件自动生成数据库表”指的是在Java编程中,使用Hibernate框架的一个功能,通过Hibernate Mapping(hbm.xml)文件来自动创建对应的数据库表结构。Hibernate是流行的Java ORM(对象关系映射)...

    使用Hibernate逆向生成实体类的方法(注解和hbm.xml映射文件)

    - 在指定的包下查看生成的实体类和对应的hbm.xml映射文件,其中hbm.xml文件定义了表结构和字段映射关系。 #### 三、配置Hibernate 1. **修改hibernate.cfg.xml**: - 打开项目的hibernate.cfg.xml文件,添加或...

    利用Middlegen Hibernate3生成hbm.xml配置和java类

    Middlegen是一个开源工具,它能够根据数据库的表结构自动生成Hibernate的配置文件以及Java源代码。这样,开发者就不需要手动编写hbm.xml文件来描述数据库表与Java类之间的关系,也不需要为每个表创建对应的Java实体...

    Hibernate参数设置一览表

    可选值包括`create`(每次启动时创建新表)、`update`(根据实体类更新表结构)、`validate`(验证表结构是否匹配实体类)、`none`(不进行任何操作)。在生产环境中,通常设置为`validate`。 7. **hibernate....

    Hibernate逆向生成entity和hbm.xml文件

    实体类是Java对象,它们代表数据库中的表,而hbm.xml文件则是Hibernate的映射文件,用于定义实体类与数据库表之间的对应关系。在实际开发中,当数据库表结构已经设计好时,使用Hibernate的逆向工程工具可以自动创建...

    Hibernate 配置详解 (一)

    `*.hbm.xml`文件主要用于定义实体类与数据库表之间的映射关系,包括表名、字段名、主键生成策略等细节。它是Hibernate能够执行CRUD操作的关键,每个实体类通常对应一个`*.hbm.xml`文件。 ##### 文件结构概览 一个...

    Hibernate3所有包和配置文件

    3. ***.hbm.xml**: 这些是Hibernate的映射文件,用于定义Java类与数据库表之间的映射关系。每个.hbm.xml文件对应一个Java实体类,它详细描述了类的属性如何映射到数据库表的列,以及主键、外键等关系。例如,`User....

    hibernate.cfg.xml 配置 和数据库驱动

    本文将深入探讨`hibernate.cfg.xml`的配置及其与数据库驱动的关系。 首先,我们来看`hibernate.cfg.xml`的基本结构。这个XML文件包含了Hibernate所需的全部配置信息,如数据库连接信息、实体类的映射、事务管理策略...

    Hibernate.cfg.xml常用配置总结.pdf

    `Hibernate.cfg.xml` 文件是 Hibernate 框架的核心配置文件,它包含了连接数据库、设置映射规则以及其它关键参数的配置。在这个配置文件中,有几个常用的属性,对 Hibernate 的行为有着重要影响。以下是对这些配置的...

    hibernate

    - ***.hbm.xml**:这些文件定义了 Java 类和数据库表之间的映射关系。 - **Hibernate 应用**:这是使用 Hibernate 的应用程序部分,包括创建 Session、执行 CRUD 操作等。 - **表结构**:数据库中的表结构,与 PO 相...

    structs的配置文件hbm.xml

    通过本文的介绍,我们了解了HBM.XML文件在Struts2 + Hibernate + Spring整合中的作用和意义,以及如何通过HBM.XML文件定义实体类与数据库表之间的映射关系。此外,还简要介绍了三种技术框架的整合方式,为开发者提供...

    hibernate-dtd

    映射文件`*.hbm.xml`则是Hibernate对象与数据库表之间的映射定义,DTD在这里定义了如`&lt;class&gt;`、`&lt;table&gt;`、`&lt;id&gt;`、`&lt;property&gt;`、`&lt;many-to-one&gt;`等元素的结构。通过这些元素,开发者可以详细指定Java类与数据库表...

Global site tag (gtag.js) - Google Analytics