0 大家好.上次讲了关于hibernate中双向1-N的映射配置,可以参考:http://www.cnblogs.com/souvenir/p/3784510.html 实际项目中,对象间的关系比较复杂,除了上次讲的相互关联以外,这次我们要讲的就是关于对象的继承.hibernate如何来通过配置完成对象的继承? 1 比如有一个父类person,然后两个对应的子类,一个是teacher,一个是student.教师和老师除了拥有person这个类所有的属性以外,还会有一些自己独特的属性. hiber…
几个月前,我在博问里面发了一个问题:http://q.cnblogs.com/q/64900/,但是一直没有找到好的答案,关闭问题以后才自己解决了,在这里分享一下. 首先我重复一下场景,博问里面举的动物的例子,这篇文章里为了和我的代码对应,换一个例子.假设要做一个企业的人员管理系统,有各种各样的用户,有的身份是老板,有的身份是员工,有的身份是保安,等等,这些用户可能有非常多非常多通用的行为,比如说修改年龄,比如说按姓名或者工号在全公司查找,并且大多数情况下我们不关心一个人的具体身份,这时候我希望…
三种继承映射关系.   1,SINGLE_TABLE   person student  teacher 在一个表中,student和teacher继承自person,通过一个DiscriminatorValue的内容来标识该条内容是student还是teacher.   package com.bjsxt.hibernate; import javax.persistence.DiscriminatorColumn; import javax.persistence.Discriminator…
继承映射在 Annotation 中使用 @Inheritance 注解,并且需要使用 strategy 属性指定继承策略,继承策略有 SINGLE_TABLE.TABLE_PER_CLASS 和 JOINED 三种. 一.SINGLE_TABLE SINGLE_TABLE 是将父类和其所有的子类集合在一块,存在一张表中,并创建一个新的字段来判断对象的类型. Person.java: @Entity @Inheritance(strategy=InheritanceType.SINGLE_TAB…
1 之前把SSH看完了,现在从头开始进行项目实践.现在讲整个过程中的点滴记录下来,希望对后来者有参考. 2 SSH是一个轻量级的java开发框架,struts负责MVC开发模式中的controller角色,hibernate则是负责对象的持久化,也就是对DB的访问,spring则是利用其IOC反转控制来完成对bean对象的管理,包括对hibernate的管理.好吧,这些东西相信大家都不陌生.现在我们正式开始,整个开发步骤主要包括以下几点: 新建web project项目 增加spring与hib…
1 好了,前面spring与hibernate的整合开发我们基本上讲完了,现在要开始服务层的开发,也就是处理事务的action,在这里我们需要引入spring与struts的整合.也就是将action也作为一个bean交由spring进行管理.当然首先我们要完成相关的配置. 2 配置 第一步当然是现在项目中引入struts包,也可以通过IDE快速的引入. 然后就是修改web.xml的配置信息: <listener> <listener-class>org.springframewo…
1 OK,上一篇已经介绍了项目开发的前期准备工作,具体内容可以参考:http://www.cnblogs.com/souvenir/p/3783686.html 按照开发步骤,我们现在已经可以开始进行业务逻辑组件层的开发工作了.但是之前只写了一个bean,而且结构也相对很简单,对于大型项目来说肯定是不够的,所以 本章节的重点就是来创建更多的bean对象,为后面的逻辑组件开发做好准备工作. 对了,忘了介绍,我们是根据书上需求,准备做一个简单的HR系统,包括简单的请假,查工资等功能. 2 有人肯定疑…
在面向对象的程序领域中,类与类之间是有继承关系的,例如Java世界中只需要extends关键字就可以确定这两个类的父子关系,但是在关系数据库的世界中,表与表之间没有任何关键字可以明确指明这两张表的父子关系,表与表是没有继承关系这样的说法的.为了将程序领域中的继承关系反映到数据中,Hibernate为我们提供了3中方案: 第一种方案:一个子类对应一张表. 第二种方案:使用一张表表示所有继承体系下的类的属性的并集. 第三种方案:每个子类使用一张表只存储它特有的属性,然后与父类所对应的表以一对一主键关…
先看三个类的继承关系,Payment是父类,CashPayment和CreditCardPayment是Payment的子类:   view plaincopy to clipboardprint public class Payment { protected long id; private String amount; // setter,getter } public class CashPayment extends Payment { private String cashType;…
问题: 我们在配置hibernate的时候,默认是会配置下面的两个属性的 <property name="hibernate.default_catalog">hibernate</property> <property name="hibernate.default_schema">test</property> 但是问题来了,在使用hibernate处理继承关系的时候,出现 WARN: SQL Error: 106…