組件(Component)映射多用來表示對象的從屬關系(組合,聚合).比如一個學生可能有姓名,年齡,性別,成績等屬性,其中成績是另一個對象,又有科目,分數屬性,這里就需要用組件映射來表是之間的關系.
Java代碼:
// 學生

class Student
{
private String name;
private int age;
private String sex;
private Grade grade;



}
// 成績

class Grade
{
private String subject;
private float score;



}
數據庫:
-- 學生表
create table STUDENT (
ID char(32) not null,
NAME varchar(16) not null,
SEX char(1),
AGE integer,
primary key (ID)
);

-- 成績表
create table GRADE (
ID char(32) not null,
student_id char(32) not null,
SUBJECT varchar(10),
SCORE float,
primary key (ID),
foreign key (student_id)
); Hibernate映射文件:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="Student" table="STUDENT">

<id name="id" type="string" unsaved-value="null">
<column name="ID" sql-type="char(32)"/>
<generator class="uuid.hex"/>
</id>
<property name="name" type="string" not-null="true">
<column name="NAME" length="16" not-null="true"/>
</property>
<property name="sex" type="char" column="SEX"/>
<property name="age" type="int" column="AGE"/>
<component name="grade" class="Grade">
<property name="subject" type="string" column="SUBJECT" not-null="true"/>
<property name="score" type="float" column="SCORE" not-null="true"/>
</component>
</class>
</hibernate-mapping>
posted on 2005-12-22 18:46
ZhuJun 閱讀(781)
評論(0) 編輯 收藏 所屬分類:
開發手記 、
開源項目