我的 O/R Mapping 之旅(二)

本文是关于Hibernate O/R Mapping的第二部分,主要解析如何配置映射文件以处理数据库中的主从表关系。通过示例解释了如何为PEOPLE和AUTO_INFO表创建映射文件,并详细分析了AutoInfo.hbm.xml和People.hbm.xml中的配置项,包括ID生成策略、属性定义以及多对一关联关系的设置。同时,讨论了级联操作(cascade)在关系映射中的重要性。
摘要由CSDN通过智能技术生成

 

    在上一部分我只讲到如何通过数据库中的表生成映射文件和 POJO。在这一部分中,我将讲解映射文件。

 

    先看看这张表:

                   

 

在现实的车辆管理系统中,绝对不会把车辆信息和拥有人信息放在一张表中。应该是“一个拥有者”拥有一或多个“车辆”。来看看分解后的表,PEOPLE 表,设置 OWNER_ID 主键:

  
 

    AUTO_INFO 表,设置 AUTO_ID 主键:

 

  

   
为两表配置主、外键关系,设置 PEOPLE 表为主表:

 

               

 

打开 Eclipse,为这两张表生成映射文件。

 

AutoInfo.hbm.xml

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

<hibernate-mapping package="bo">
 <class name="AutoInfo" table="AUTO_INFO">
  <id
   column="AUTO_ID"
   name="Id"
   type="integer"
  >
   <generator class="vm" />
  </id>
  <property
   column="LICENSE_PLATE"
   length="20"
   name="LicensePlate"
   not-null="false"
   type="string"
   />
  <many-to-one
   class="People"
   name="OwnerNo"
   not-null="true"
  >
   <column name="OWNER_NO" />
  </many-to-one>
 </class>
</hibernate-mapping>

 

People.hbm.xml  

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

<hibernate-mapping package="bo">
 <class name="People" table="PEOPLE">
  <id
   column="OWNER_ID"
   name="Id"
   type="integer"
  >
   <generator class="vm" />
  </id>
  <property
   column="NAME"
   length="50"
   name="Name"
   not-null="false"
   type="string"
   />
  <property
   column="ADDRESS"
   length="1000"
   name="Address"
   not-null="false"
   type="string"
   />
  <set inverse="true" name="AutoInfoSet">
   <key column="OWNER_NO" />
   <one-to-many class="AutoInfo"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值