在上一部分我只讲到如何通过数据库中的表生成映射文件和 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" |