昨天我们了解了怎么使用hibernate来进行层次设计,今天我们再来了解另外一种方法实现层次设计,这就是通过在表内置入标志来实现。在hibernate的映射文件中我们通过descriminator标签来进行实现。
废话不多说,我们直接看例子:
我们把昨天的TItem的映射文件修改为:
<class name="TItem" table="ITEM" polymorphism="explicit">
<id name="id" column="id" type="java.lang.Integer">
<generator class="native" />
</id>
<discriminator column="category" type="java.lang.String"/>
<property name="name" column="name" type="java.lang.String"/>
<property name="manufacture" column="manufacture" type="java.lang.String"/>
</class>
看到中间,我们加入了一个discriminator标签,它表明我们以下的两个subclass通过哪个字段来进行区别。
<subclass name="TBook" discriminator-value="1">
<property name="pageCount" column="pageCount"/>
</subclass>
<subclass name="TDVD" discriminator-value="2" >
<property name="regionCode" column="regionCode"/>
</subclass>
我们看到这两段,它指明了当discriminator所指定的field的值为1时,表明它是TBook类,并且pageCount有值;当discriminator所指定的field值为2时,表明它是TDVD类,并且regionCode有值。
这样我们就只需要用到一个表,就表明了它们几个类的关系了,注意,这种方式对有过多子类的情况下,并不好,它会使主表的字段过多,会造成一定的设计上的不便。如果有过多的子类,还是建议各个子类对应各自的表,保留它们的单独字段,如http://cxshun.iteye.com/blog/1054004的第二种方法。
分享到:
相关推荐
本篇文章将深入探讨Hibernate中的实体层次设计,这是一个关键概念,它涉及到如何在数据库中表示类的继承结构。通过理解这些设计模式,开发者能够更好地管理和优化数据存储。 首先,我们来看“tablePerConcreteClass...
【Hibernate程序设计】深入解析 Hibernate 是一个面向Java环境的对象关系映射(ORM)框架,它的主要作用是简化Java应用程序与数据库之间的交互。通过Hibernate,开发者可以将对象模型与关系数据库模型进行映射,...
### 基于Struts和Hibernate的教务系统研究与设计 #### 摘要与背景 本文讨论了一个基于Struts和Hibernate框架的教务管理系统的设计与实现方案。该系统旨在解决传统教务管理系统中存在的问题,如运行不稳定、后期...
Hibernate是一个强大的Java对象关系映射(ORM)框架,它消除了传统SQL编程的繁琐,提供了更高层次的抽象,使我们能够用面向对象的方式处理数据。 1. **SessionFactory接口**: SessionFactory是Hibernate的核心组件...
标题 "spring2+struts2+hibernate3整合(Europa)" 指的是一个集成开发项目,其中使用了Spring 2、Struts 2和Hibernate 3这三大流行开源框架,它们都是Java Web开发中的重要组件。在这个项目中,开发者将这三个框架...
此外,Hibernate还支持JTA(Java Transaction API)和JPA(Java Persistence API),以满足不同层次的事务管理和标准兼容性需求。 总之,通过深入研究Hibernate 3.1的源代码,开发者可以更好地掌握ORM技术,理解...
总的来说,Spring 4、Struts2和Hibernate4的整合是一个深度集成的过程,涉及到多个层次的配置和调优。熟练掌握这种整合技术,对于提升Java Web开发能力至关重要。通过学习和实践提供的示例项目,开发者可以更好地...
在J2EE架构中,Hibernate 和 Struts 是两个非常重要的开源框架,它们各自解决了数据持久化和MVC设计模式实施的问题。本文将详细介绍这两种框架,并探讨如何利用它们来构建高效、低耦合性的J2EE应用。 #### 二、...
它们各自在应用程序的不同层次上发挥着重要作用,Struts2处理MVC模式中的视图和控制,Spring提供了依赖注入和面向切面编程,Hibernate则负责数据库持久化层。这个整合实例提供了所有必要的jar包和源码,方便开发者...
总结,SSH整合利用了Spring的控制反转和面向切面编程,Struts2的MVC设计,以及Hibernate的ORM能力,提供了高效、灵活的Java Web开发解决方案。结合Maven的项目管理,大大提高了开发效率和项目的可维护性。通过上述...
Struts2、Spring4和Hibernate4是Java Web开发中的三个重要框架,它们分别负责MVC模式中的表现层、业务层和服务层。SSH整合是将这三个框架集成在一起,以实现高效、松耦合的企业级应用开发。 **Struts2** 是一个基于...
### 基于Struts与Hibernate框架的网络购物系统设计与实现 #### 一、引言 在现代软件工程中,框架的运用极大地提升了开发效率和软件质量。Struts与Hibernate便是两个广受赞誉的开源框架,分别在MVC(Model-View-...
【hibernate独立开发包】是一个专为Java开发者设计的持久化框架,它极大地简化了数据库操作,使得开发者可以更加专注于业务逻辑,而非底层数据库交互的细节。Hibernate提供了对象关系映射(ORM)功能,将Java类与...
同时,我们可以利用Hibernate的Criteria API或HQL(Hibernate Query Language)来编写高效的查询,以获取特定层次或路径的节点。 5. **缓存策略**:对于大型树结构,缓存策略的设置至关重要。Hibernate提供了第一级...
Struts2、Hibernate和Spring是Java Web开发中的三大框架,它们的组合通常被称为SSH(Struts2、Spring、Hibernate)框架。这篇内容我们将深入探讨如何在SSH框架下实现高效的分页技术。 首先,Struts2作为MVC(Model-...
这种设计模式使得程序结构清晰,逻辑层次分明,降低了开发难度。 Spring框架则是一个全面的企业级应用框架,它不仅包含了IOC(Inversion of Control,控制反转)容器,用于管理对象的生命周期和依赖关系,还提供了...
Struts1.2、Spring2.5和Hibernate3.2是经典的Java企业级开发框架组合,它们各自在应用程序的不同层次上发挥着重要作用。Struts1.2是一个MVC(Model-View-Controller)框架,主要负责处理用户界面与业务逻辑之间的...
总结起来,这个项目通过Struts2和Hibernate框架,实现了对无限级联分类的增删改查操作,其中涉及到数据库设计、ORM映射、MVC架构的运用以及递归算法在视图层的实现。这种无限级联树形分类结构在许多实际应用场景中都...
2. **实体类和继承层次结构**:在Hibernate中,实体类可以构成继承关系,通过`@Inheritance`注解来定义继承策略,如SINGLE_TABLE、JOINED、TABLE_PER_CLASS等。不同的策略会影响数据库表的设计和查询的方式。 3. **...