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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate通过xml配置文件实现表与实体的映射相关的知识,希望对你有一定的参考价值。

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

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

实体类:

/**
* 卡类型表的实体
*/
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>

 

以上是关于hibernate通过xml配置文件实现表与实体的映射的主要内容,如果未能解决你的问题,请参考以下文章

数据库多个表与对应实体类怎么建?

hibernate 使用步骤

hibernate复合主键

Hibernate实现有两种配置,xml配置与注释配置

hibernate笔记--实体类映射文件"*.hbm.xml"详解

Hibernate自动生成配置文件和实体类