hibernate通过xml配置文件实现表与实体的映射

时间:2023-12-04 08:08:44

这里讨论的是一对多的关系

在做公交卡系统,会涉及到两张表,忽略两种表的作用,只关心他们之间的关系 : 卡规格表和卡类表,一种卡规格会对应多个卡类

实体类:

/**
* 卡类型表的实体
*/
public class Acardtype  implements java.io.Serializable {

     private Long id;
     private Cardstandard cardstandard;   //卡规格表外键
     .........
/**
*卡规格表实体
*/

public class Cardstandard  implements java.io.Serializable {

     private Long id;
     private Set acardtypes = new HashSet( );    //此集合用来存卡类型   ....

xml映射:

 <-- 卡类型的xml映射 -->
<hibernate-mapping>
    <class name="com.foorich.entity.oracle.Acardtype" table="ACARDTYPE" schema="FOORICH_CARD">
        <id name="id" type="java.lang.Long">
            <column name="ID" />
            <generator class="increment"></generator>   <-- 主键 -->
        </id>

     <-- 映射关系属性,
          many-to-one:卡类型是多的一方,卡规格是一的一方
          fetch:查询时忽略懒加载
          column:指名卡类型表的外键名称
    -->
         <many-to-one name="cardstandard" class="com.foorich.entity.oracle.Cardstandard" fetch="select">
            <column name="CARDSTANDARDID" />
        </many-to-one>  </class>
<hibernate-mapping>             
<-- 卡规格表的映射文件 -->
<hibernate-mapping>
    <class name="com.foorich.entity.oracle.Cardstandard" table="CARDSTANDARD" schema="FOORICH_CARD">
        <id name="id" type="java.lang.Long">
            <column name="ID" />
            <generator class="increment" />
        </id>

    <-- 集合映射
      inverse:可以通过卡规格表找到卡类型表
      key:告知,卡类型表中的外键
      one-to-many: 告知它的关系表是卡类型表
   -->
        <set name="acardtypes" inverse="true">
            <key>
                <column name="CARDSTANDARDID" />
            </key>
            <one-to-many class="com.foorich.entity.oracle.Acardtype" />
        </set>
    </class>
</hibernate-mapping>