1.一对一的关联关系:
1)PK
Car.hbm.xml
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.allanlxf.hibernate.association.o2o.entity">
<class name="Car" table="car_pk">
<id name="id" column="id" type="integer">
<generator class="native" />
</id>
<property name="name" column="name" type="string" length="15" not-null="false"/>
<property name="serialNumber" column="serial" type="string" length="30"/>
<property name="manufacturer" column="manufacturer" type="string" length="50"/>
<property name="produceDate" column="producedate" type="date" />
<!--关系维护者-->
<one-to-one name="engine" class="Engine" cascade="all"/>
</class>
</hibernate-mapping>
Engine.hbm.xml
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.allanlxf.hibernate.association.o2o.entity">
<class name="Engine" table="engine_pk">
<id name="id" column="id" type="integer">
<generator class="foreign">
<param name="property">car</param>
</generator>
</id>
<property name="model" column="model" type="string" length="20"/>
<property name="manufacturer" column="manufacturer" type="string" length="50"/>
<property name="produceDate" column="producedate" type="date" />
<one-to-one name="car" class="Car" constrained="true"/>
</class>
</hibernate-mapping>
2)FK
Engine.hbm.xml
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.allanlxf.hibernate.association.o2o.entity">
<class name="Engine" table="engine_fk">
<id name="id" column="id" type="integer">
<generator class="native"/>
</id>
<property name="model" column="model" type="string" length="20" not-null="true"/>
<property name="manufacturer" column="manufacturer" type="string" length="50" not-null="true"/>
<property name="produceDate" column="producedate" type="date" />
<many-to-one name="car" class="Car" column="carid" unique="true" />
</class>
</hibernate-mapping>
===================================================================================================
2.一对多的关联关系
Order.hbm.xml
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.allanlxf.hibernate.association.o2m.entity">
<class name="Order" table="ec_order">
<id name="id" column="id" type="integer">
<generator class="native" />
</id>
<property name="owner" column="owner" type="string" length="15" not-null="true"/>
<property name="phone" column="phone" type="string" length="15" not-null="true"/>
<property name="address" column="address" type="string" length="50" />
<set name="items" cascade="all-delete-orphan" inverse="true">
<key column="orderid" />
<one-to-many class="Item" />
</set>
</class>
</hibernate-mapping>
Item.hbm.xml
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.allanlxf.hibernate.association.o2m.entity">
<class name="Item" table="ec_item">
<id name="id" column="id" type="integer">
<generator class="native" />
</id>
<property name="product" column="product" type="string" length="15" not-null="true"/>
<property name="amount" column="amount" type="integer" not-null="true"/>
<many-to-one name="order" column="orderid" not-null="true" foreign-key="fk_item_order"/>
</class>
</hibernate-mapping>
==============================================================================================
3.多对多的关联关系
TarenaClass.hbm.xml
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.allanlxf.hibernate.association.m2m.entity">
<class name="TarenaClass" table="class">
<id name="id" column="id" type="integer">
<generator class="native" />
</id>
<property name="name" column="name" type="string" length="15"/>
<property name="startDate" column="sdate" type="date" />
<property name="endDate" column="edate" type="date" />
<!--指出数据库中保存关联关系的表名-->
<set name="courses" table="class_course" cascade="persist">
<key column="classid" />
<many-to-many class="TarenaCourse" column="courseid" foreign-key="fk_course"/>
</set>
</class>
</hibernate-mapping>
TarenaCourse.hbm.xml
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.allanlxf.hibernate.association.m2m.entity">
<class name="TarenaCourse" table="course">
<id name="id" column="id" type="integer">
<generator class="native" />
</id>
<property name="name" column="name" type="string" length="15" not-null="true"/>
<property name="period" column="perion" type="integer" />
<set name="classes" table="class_course" inverse="true">
<key column="courseid" />
<many-to-many class="TarenaClass" column="classid" foreign-key="fk_class"/>
</set>
</class>
</hibernate-mapping>
1)PK
Car.hbm.xml
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.allanlxf.hibernate.association.o2o.entity">
<class name="Car" table="car_pk">
<id name="id" column="id" type="integer">
<generator class="native" />
</id>
<property name="name" column="name" type="string" length="15" not-null="false"/>
<property name="serialNumber" column="serial" type="string" length="30"/>
<property name="manufacturer" column="manufacturer" type="string" length="50"/>
<property name="produceDate" column="producedate" type="date" />
<!--关系维护者-->
<one-to-one name="engine" class="Engine" cascade="all"/>
</class>
</hibernate-mapping>
Engine.hbm.xml
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.allanlxf.hibernate.association.o2o.entity">
<class name="Engine" table="engine_pk">
<id name="id" column="id" type="integer">
<generator class="foreign">
<param name="property">car</param>
</generator>
</id>
<property name="model" column="model" type="string" length="20"/>
<property name="manufacturer" column="manufacturer" type="string" length="50"/>
<property name="produceDate" column="producedate" type="date" />
<one-to-one name="car" class="Car" constrained="true"/>
</class>
</hibernate-mapping>
2)FK
Engine.hbm.xml
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.allanlxf.hibernate.association.o2o.entity">
<class name="Engine" table="engine_fk">
<id name="id" column="id" type="integer">
<generator class="native"/>
</id>
<property name="model" column="model" type="string" length="20" not-null="true"/>
<property name="manufacturer" column="manufacturer" type="string" length="50" not-null="true"/>
<property name="produceDate" column="producedate" type="date" />
<many-to-one name="car" class="Car" column="carid" unique="true" />
</class>
</hibernate-mapping>
===================================================================================================
2.一对多的关联关系
Order.hbm.xml
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.allanlxf.hibernate.association.o2m.entity">
<class name="Order" table="ec_order">
<id name="id" column="id" type="integer">
<generator class="native" />
</id>
<property name="owner" column="owner" type="string" length="15" not-null="true"/>
<property name="phone" column="phone" type="string" length="15" not-null="true"/>
<property name="address" column="address" type="string" length="50" />
<set name="items" cascade="all-delete-orphan" inverse="true">
<key column="orderid" />
<one-to-many class="Item" />
</set>
</class>
</hibernate-mapping>
Item.hbm.xml
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.allanlxf.hibernate.association.o2m.entity">
<class name="Item" table="ec_item">
<id name="id" column="id" type="integer">
<generator class="native" />
</id>
<property name="product" column="product" type="string" length="15" not-null="true"/>
<property name="amount" column="amount" type="integer" not-null="true"/>
<many-to-one name="order" column="orderid" not-null="true" foreign-key="fk_item_order"/>
</class>
</hibernate-mapping>
==============================================================================================
3.多对多的关联关系
TarenaClass.hbm.xml
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.allanlxf.hibernate.association.m2m.entity">
<class name="TarenaClass" table="class">
<id name="id" column="id" type="integer">
<generator class="native" />
</id>
<property name="name" column="name" type="string" length="15"/>
<property name="startDate" column="sdate" type="date" />
<property name="endDate" column="edate" type="date" />
<!--指出数据库中保存关联关系的表名-->
<set name="courses" table="class_course" cascade="persist">
<key column="classid" />
<many-to-many class="TarenaCourse" column="courseid" foreign-key="fk_course"/>
</set>
</class>
</hibernate-mapping>
TarenaCourse.hbm.xml
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.allanlxf.hibernate.association.m2m.entity">
<class name="TarenaCourse" table="course">
<id name="id" column="id" type="integer">
<generator class="native" />
</id>
<property name="name" column="name" type="string" length="15" not-null="true"/>
<property name="period" column="perion" type="integer" />
<set name="classes" table="class_course" inverse="true">
<key column="courseid" />
<many-to-many class="TarenaClass" column="classid" foreign-key="fk_class"/>
</set>
</class>
</hibernate-mapping>