`
esffor
  • 浏览: 1372080 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

两种针对继承的HBM文件编写方法

阅读更多

首先,有三个实体对象User,Student, Teacher

其中三者共同的属性是name,password,fullname,均定义在User中,Student和Teacher继承User

如果要在hibernate配置文件中定义上面的关系,有两种方法

(1)使用<union-subclass>
          使用这种方式,三个表的字段名称必须完全相同(name,password,fullname)

<class table="userinfo" name="cm.hxex.exam.model.User">
    
<id name="id" column="ID">
      
<generator class="uuid.hex"/>
    
</id>
    
<property name="name" column="NAME"/>
    
<property name="password" column="PASSWORD"/>
    
<property name="fullname" column="FULLNAME"/>
    
<union-subclass table="teacher" name="cn.hxex.exam.mode.Teacher">
        
<many-to-one column="class_id" cascade="save-update" name="classes"/>
    
</union-subclass>

     
<union-subclass table="student" name="cn.hxex.exam.mode.Student">
       
<set cascade="all" lazy="true" table="TEACHER_CLASS" name="classes">
         
<key column="TEACHER_ID"/>
         
<many-to-many class="cn.hxex.exam.model.Classes" column="CLASS_ID"/>
       
</set>
     
</union-subclass>
</class>

 (2)使用单独的<class>

           可以解决字段名不一样的问题,但在每个子类中都要进行相应的属性定义,造成配置重复

 <class table="USERINFO" name="cn.hxex.exam.model.User">
    
<id name="id" column="ID">
      
<generator class="uuid.hex"/>
    
</id>
    
<property name="name" column="NAME"/>
    
<property name="password" column="PASSWORD"/>
    
<property name="fullname" column="FULLNAME"/>
  
</class>

    
<class table="STUDENT" name="cn.hxex.exam.model.Student">
    
<id name="id" column="ID">
      
<generator class="uuid.hex"/>
    
</id>
    
<many-to-one column="CLASS_ID" cascade="save-update" name="classes"/>
    
<property name="name" column="NAME"/>
    
<property name="password" column="PASSWORD"/>
    
<property name="fullname" column="FULLNAME"/>
  
</class>

    
<class table="TEACHER" name="cn.hxex.exam.model.Teacher">
    
<id name="id" column="ID">
      
<generator class="uuid.hex"/>
    
</id>
    
<set inverse="true" name="papers">
      
<key column="TEACHER_ID"/>
      
<one-to-many class="cn.hxex.exam.model.TestPaper"/>
    
</set>
    
<set cascade="all" lazy="true" table="TEACHER_CLASS" name="classes">
      
<key column="TEACHER_ID"/>
      
<many-to-many class="cn.hxex.exam.model.Classes" column="CLASS_ID"/>
    
</set>
    
<property name="name" column="NAME"/>
    
<property name="password" column="PASSWORD"/>
    
<property name="fullname" column="FULLNAME"/>
  
</class>


分享到:
评论

相关推荐

    《程序天下:J2EE整合详解与典型案例》光盘源码

    12.4.1 Hibernate的两种配置方式 12.4.2 配置数据库连接池 12.4.3 使用JNDI 12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    12.4.1 Hibernate的两种配置方式 12.4.2 配置数据库连接池 12.4.3 使用JNDI 12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    12.4.1 Hibernate的两种配置方式 12.4.2 配置数据库连接池 12.4.3 使用JNDI 12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    12.4.1 Hibernate的两种配置方式 12.4.2 配置数据库连接池 12.4.3 使用JNDI 12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO...

    hibernate资料

    7. **事务管理**:Hibernate支持JTA和JDBC两种事务管理方式,确保数据操作的原子性和一致性。 在实际使用Hibernate时,首先需要下载和配置Hibernate的jar包,包括hibernate3.jar和其他相关依赖库,如数据库驱动。...

    hibernate-3.5.6 源码

    5. **Criteria API与HQL**:Hibernate提供了两种查询语言,一种是面向对象的Criteria API,另一种是面向数据库的HQL(Hibernate Query Language)。两者都允许开发者以更高级别的方式编写查询,而不是直接写SQL,...

    hibernate学习笔记

    4. Transaction:事务管理,Hibernate支持JTA和JDBC两种事务管理方式,确保数据的一致性和完整性。 三、配置与初始化 1. 配置文件(hibernate.cfg.xml):定义数据库连接信息、缓存策略、方言等参数。 2. ...

    hibernate学习

    Hibernate提供了HQL(Hibernate Query Language)和Criteria API两种查询方式,它们允许开发者以面向对象的方式编写查询语句,提高了代码的可读性和可维护性。 **关联映射、继承映射和集合映射** - **关联映射**:...

    hibernate经典源码

    5. **Criteria查询与HQL**:Hibernate提供了两种查询方式,一是基于Java对象的Criteria API,二是面向对象的查询语言HQL。两者都能实现复杂的数据库查询,理解其语法和使用场景能提升查询效率。 6. **懒加载与级联...

    hibernate中文帮助文档

    3. **实体类和映射文件**:实体类是业务逻辑中的对象模型,它们通过`hibernate-mapping`标签下的XML文件(如`.hbm.xml`)与数据库表进行映射。映射文件定义了属性与字段、主键生成策略、关联关系等信息。 4. **...

    Hibernate电子书(全)

    Hibernate通过`@ManyToOne`和`@OneToMany`注解支持这两种关系的映射,使得实体之间的关联能够以直观的方式表示出来。 #### 双向关联与inverse设定 在实体之间存在双向关联的情况下,需要正确设置`inverse`属性,以...

    hibernat培训

    Hibernate映射申明分为XML映射文件和注解两种方式。XML映射文件(hbm.xml)描述了类与表的映射关系,而注解可以直接在类和属性上标记,使得代码更加简洁。映射主要包括类映射、属性映射、关联映射(如一对一、一对多...

    Hibernate框架

    3. Query和Criteria API:用于执行数据库查询,提供HQL(Hibernate Query Language)和Criteria API两种方式,它们都是对SQL的抽象,更加面向对象。 4. Configuration类:初始化Hibernate环境,加载配置文件,建立...

    hibernat框架学习

    **编写映射文件**(`.hbm.xml`)。 3. **编写配置文件**(`hibernate.cfg.xml`)。 4. **创建SessionFactory对象**。 5. **获取Session对象**。 6. **执行CRUD操作**。 #### Hibernate API介绍 - **Session**...

    Hibernate逍遥游记

    Hibernate提供了两种查询方式:HQL(Hibernate Query Language)和Criteria API。HQL是一种面向对象的查询语言,类似于SQL,但操作的是对象和类。Criteria API则提供了一种更面向对象的查询方式,允许在运行时动态...

    Hibernate入门到精通.pdf

    这两种查询方式都为开发者提供了灵活的检索数据的方法。 除此之外,Hibernate还支持缓存机制,如一级缓存(Session级别的缓存)和二级缓存(SessionFactory级别的缓存),能够提高数据访问速度,减少数据库压力。...

    fll.rar_fll

    5. **Criteria API** 和 **HQL(Hibernate Query Language)**:是Hibernate提供的两种查询语言,用于从数据库检索或更新数据。 在压缩包内的 "www.pudn.com.txt" 文件可能是一个链接或说明文档,指向更多关于...

    hibernate说明文档

    - **映射文件**:编写一个XML文件(如`person.hbm.xml`),描述`Person`类与数据库表之间的对应关系。 - **SessionFactory**:配置`hibernate.cfg.xml`文件,定义数据源和映射文件的位置等信息,然后使用`...

Global site tag (gtag.js) - Google Analytics