总结hibernate三中关联关系

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值