甜咖啡

我的IT空间

Hibernate映射分析

一般属性映射

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!--
 package属性,表示当前配置中所写的类名如果没有包名,则默认是这个包中的。
 -->
<hibernate-mapping package="cn.rose.b_hbm">

 <!-- <class>元素表示哪个类与对应哪个表,一个class元素代表一个类的映射。
  name属性,类的全限定名(带包名)。
  table属性,对应的表名,这个属性可以不写,代表表名和对象的简单名称是一样的。
   -->
 <class name="User" table="itcast_user">
  <!-- 一、主键映射  -->
  <id name="id" type="int">
            <generator class="native"/>
  </id>
  <!-- 二、一般属性映射(值类型,在数据库中一个列可以存放的属性,例:int, varchar, date) -->
  <!--
   使用property元素映射值类型的属性。
   name属性:对象中的属性名,必须要有。
   column属性:对应的表中的列名,可以没有,默认为属性名。
   type属性:指定的是数据类型,有两种指定的方式:
      1,指定hibernate类型,例:string, int
      2,指定Java类型,例:java.lang.String, java.lang.Integer
   length属性:指定对应的表中的列的长度限制,可以不写。
         在类型为string,text等时,指定length有效;
         在类型为int,long等时,指定length无效。
   -->
  <property name="name" column="name" type="string" length="32" />
  
  <property name="gender" type="int" />
  <property name="birthday" type="date"  />
  <property name="photo" type="binary" length="512000" />
  <!-- 指定了length=5000,则生成的数据库表中的列的text类型会至少能存5000个字符 -->
  <property name="resume" type="text" length="5000" />
  
  <!-- 三、集合映射(数组、List、Set、Map) -->
  <!-- 四、关联关系映射(一对多,一对一,多对一、继承) -->
 </class>

</hibernate-mapping>

关于集合的映射

 

 

<hibernate-mapping package="cn.rose.d_hbm_collection" >

 <class name="User" table="itcast_user">
  <id name="id">
   <generator class="native"></generator>
  </id>
  <property name="name"></property>
  
  <!-- Set集合映射(addressSet属性) -->
  <set name="addressSet" table="rose_user_addressSet">
   <key column="userId"></key>
   <element column="address" type="string" length="128"></element>
  </set>
  
  <!-- List集合映射(addressList属性) -->
  <list name="addressList" table="rose_user_addressList">
   <key column="userId"></key>
   <list-index column="index_"></list-index>
   <element column="address" type="string" length="128"></element>
  </list>
  
  <!-- Bag集合映射(addressBag属性) -->
  <bag name="addressBag" table="rose_user_addressBag">
   <key column="userId"></key>
   <element column="address" type="string" length="128"></element>
  </bag>  
  
 </class>

</hibernate-mapping>

 

 

联合主键映射

<hibernate-mapping package="cn.rose.c_hbm_id2" >

 <class name="User" table="itcast_user" mutable="true" dynamic-insert="true" dynamic-update="true">
  
  <!-- 一、联合主键映射  -->
  <!--
  <composite-id>
   <key-property name="firstName" column="firstName" type="string" length="32"></key-property>
   <key-property name="lastName" column="lastName" type="string" length="32"></key-property>
  </composite-id>
   -->
  <composite-id name="name" class="Name">
   <key-property name="firstName" column="firstName" type="string" length="32"></key-property>
   <key-property name="lastName" column="lastName" type="string" length="32"></key-property>
  </composite-id>
  
  <property name="birthday" type="date"></property>
 </class>

</hibernate-mapping>

posted on 2011-03-26 23:33 甜咖啡 阅读(603) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

<2011年3月>
272812345
6789101112
13141516171819
20212223242526
272829303112
3456789

统计

常用链接

留言簿(1)

我参与的团队

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜