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

来源:互联网 发布:saas软件销售术语 编辑:程序博客网 时间:2024/04/26 00:00

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

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: 类名
0 0
原创粉丝点击