1 三种方式
a) 一张总表SINGLE_TABLE
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="discriminator", discriminatorType=DiscriminatorType.STRING)
@DiscriminatorValue("person")
public class Person {
private int id;
private String name;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Entity
@DiscriminatorValue("student")
public class Student extends Person {
private int score;
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
@Entity
@DiscriminatorValue("teacher")
public class Teacher extends Person {
private String title;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
create table Person (
discriminator varchar(31) not null,
id integer not null auto_increment,
name varchar(255),
score integer,
title varchar(255),
primary key (id)
)
b) 每个类分别一张表TABLE_PER_CLASS
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
@TableGenerator(
name="t_gen",
table="t_gen_table",
pkColumnName="t_pk",
valueColumnName="t_value",
pkColumnValue="person_pk",
initialValue=1,
allocationSize=1
)
public class Person {
private int id;
private String name;
@Id
@GeneratedValue(generator="t_gen", strategy=GenerationType.TABLE)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Entity
public class Student extends Person {
private int score;
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
@Entity
public class Teacher extends Person {
private String title;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
create table Person (
id integer not null,
name varchar(255),
primary key (id)
)
create table Student (
id integer not null,
name varchar(255),
score integer not null,
primary key (id)
)
create table Teacher (
id integer not null,
name varchar(255),
title varchar(255),
primary key (id)
)
create table t_gen_table (
t_pk varchar(255),
t_value integer
)
c) 每个子类一张表jOINED
父类上加注解@Inheritance(strategy=InheritanceType.JOINED)
@Inheritance(strategy=InheritanceType.JOINED)
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public class Person {
private int id;
private String name;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Entity
public class Student extends Person {
private int score;
public int getScore() {
return score;
} //Person p = Person(load(1));
public void setScore(int score) {
this.score = score;
}
}
@Entity
public class Teacher extends Person {
private String title;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
create table Person (
id integer not null auto_increment,
name varchar(255),
primary key (id)
)
create table Student (
score integer not null,
id integer not null,
primary key (id)
)
create table Teacher (
title varchar(255),
id integer not null,
primary key (id)
)
alter table Student
add index FKF3371A1BA6D67A60 (id),
add constraint FKF3371A1BA6D67A60
foreign key (id)
references Person (id)
alter table Teacher
add index FKD6A63C2A6D67A60 (id),
add constraint FKD6A63C2A6D67A60
foreign key (id)
references Person (id)
- 浏览: 314894 次
- 性别:
- 来自: 重庆
文章分类
- 全部博客 (286)
- 设计模式 (14)
- spring (5)
- 开发工具 (12)
- java (19)
- apache.commons工具 (7)
- ibaits (5)
- extjs4.0 (4)
- 数据库 (2)
- spring工具类 (2)
- jquery1.8 (32)
- 杂记 (1)
- linux (2)
- Quart (1)
- springMVC (2)
- webservice (1)
- oracle (5)
- dwr (6)
- jbmp3 (27)
- lucene3.5 (27)
- javascript (18)
- hibernate3.3.2 (27)
- spring事务管理 (10)
- nio (2)
- strust2 (3)
- jvm (7)
- jquery-easyui-1.2.6 (22)
- 多线程 (14)
- maven (3)
- 常用正则表达式 (4)
最新评论
-
HF_SKY000:
请问:
一、能否提供一下密钥库文件的生成方法?
二、密钥库的密 ...
Java sslSocket 聊天实例
发表评论
-
Hibernate一对一映射配置详解
2014-12-05 09:31 1026一对一关联分为主键关联与外键关联。 主键关联:不必加额外的 ... -
createSQLQuery的addEntity和setResultTransformer方法
2014-02-27 11:44 10771. 使用SQLQuery对原生SQL查询执行的控制是通 ... -
hibernate 映射文件中 fetch 跟lazy
2014-02-13 11:36 1268fetch 和 lazy 主要是用来级联查询的 而 ... -
Hibernate中inverse="true"的理解
2014-02-12 16:05 567举例如下 Customer类: Java代码 ... -
二十三、hibernate事务隔离级别-悲观锁-乐观锁
2013-03-17 21:07 10131、事务并发时可能出现的问题: 第一类丢失更新(Lost ... -
二十二、 1+N 问题
2013-03-16 23:11 800问题的来源: 在@ManyToOne中,由于默认的fetc ... -
十九、Query的list和iterate方法的不同之处
2013-03-16 23:00 10871、list取所有字段2、iterate先取 ID,等用到的 ... -
二十、一级缓存和二级缓存和査询缓存
2013-03-16 22:51 581注意session.clear()的运用,及时清理缓存,尤 ... -
二十一、Ehcache 中ehcache.xml 配置详解和示例
2013-03-16 22:25 851<ehcache xmlns:xsi="h ... -
十八、Hibernate 查询(Query Language)
2013-03-16 22:15 822NativeSQL >HQL.> EJBQL(J ... -
十七、树状结构的设计
2013-03-13 17:09 894在同—个类中使用One2Many和Many2One@Entit ... -
十五、集合映射
2013-03-13 11:24 6981 Set2 List (与Set差不多 多个@O ... -
十四、关联关系中的CRUD_Cascade_Fetch
2013-03-12 15:26 8981 设定cascade以设定在持久化时对于关联对象的 ... -
十三、多对多
2013-03-11 22:15 8021 单向关联:关系模型(Teache多对多Stude ... -
十二、多对一与一对多
2013-03-11 17:22 8791 多对一单向关联实体模型(User多对一Grou ... -
十一、组件映射
2013-03-10 20:57 7901 对象关系:一个对象是另外一个对象的一部分2 数 ... -
十、一对一关联
2013-03-10 20:43 12321 一对一单向外键关联Annotation: 在被约 ... -
九、Session缓存
2013-02-28 15:10 885Session接口是Hibernate向应用程序提供操作 ... -
八、Session
2013-02-28 10:53 859方法 (CRUD)save delete:只要对象有主键, ... -
七、三种状态
2013-02-23 22:45 568三种状态的区分关键在于 有没有ID ID在数 ...
相关推荐
### 继承映射在IT行业的深入解析 #### 核心概念:继承映射与多态支持 在软件开发领域,尤其是使用ORM(对象关系映射)技术进行数据库操作时,“继承映射”是一个关键的概念。它允许在数据库中表示面向对象编程中的...
继承映射详细,非常实用的学习资料继承映射详细,非常实用的学习资料
本主题将深入探讨"Hibernate继承映射+C3P0代码"的相关知识点。 首先,让我们理解Hibernate的继承映射。在Java中,我们可以创建一个基类,然后派生出多个子类,这种设计模式在数据库中也可以被映射出来。Hibernate...
本教程主要探讨的是Hibernate中的“继承映射”特性,这是一项关键功能,它允许我们将复杂的类继承结构映射到数据库表中。通过继承映射,我们可以有效地管理和组织数据,提高代码的复用性和可维护性。 在Hibernate中...
继承映射则适用于具有共同属性但又有所区别的实体,如不同类型的用户、不同状态的订单等,通过继承关系可以避免代码重复,提高代码复用性。 总结,JPA提供了强大的关联和继承映射机制,让开发者能更便捷地处理...
Hibernate继承映射是将Java类的继承关系映射到数据库表的一种策略,使得对象模型的复杂性能够平滑地转化为关系数据库模型。本篇将详细介绍Hibernate继承映射的第一种策略——每棵类继承树对应一张表,即单一表继承...
### 用Hibernate映射继承关系 #### 14.1 继承关系树的每个具体类对应一个表 在Hibernate中映射继承关系时,一种常见的策略是将继承关系树的每个具体类映射到单独的数据库表中。这种方法称为**表/类映射**(Table/...
《Hibernate继承映射详解》 Hibernate,作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了数据库操作。在实际项目中,我们常常会遇到类的继承关系,而Hibernate提供了强大的支持来处理这种继承关系的...
《Hibernate继承映射详解》 在Java开发中,对象关系映射(ORM)框架如Hibernate大大简化了数据库操作。Hibernate不仅提供了对基本数据类型的映射,还支持复杂的数据结构,如继承关系的映射。本篇文章将深入探讨...
【标题】:“Hibernate继承映射(annotation)” 在Java对象关系映射(ORM)框架中,Hibernate是一个非常重要的工具,它允许开发人员将Java类映射到数据库表,从而简化了数据库操作。本主题主要探讨的是Hibernate中的...
4. **继承映射的配置**:在Hibernate的XML映射文件或注解中,需要显式声明继承关系。例如,使用`@Inheritance(strategy=InheritanceType.SINGLE_TABLE)`注解在父类上,然后在子类上使用`@DiscriminatorValue`指定...
针对hibernate的继承映射部分做了几个测试的例子,更加直观的阐述了继承映射的几种方式以及对应的表结构方式,文件被分割成3部分 http://download.csdn.net/source/259075 http://download.csdn.net/source/259072 ...
在本教程中,我们将深入探讨Hibernate中的继承映射,特别是在"Hibernate教程17_继承映射_补充2"中所涉及的主题。Hibernate是Java中一个非常流行的对象关系映射(ORM)框架,它允许开发者用面向对象的方式处理数据库...
在本教程中,我们将深入探讨Hibernate中的继承映射策略,特别是"Table Per Class"策略,这是Java对象模型到关系数据库映射的一种方法。在Hibernate框架中,继承是通过ORM(对象关系映射)来实现的,它允许我们将复杂...
针对hibernate的继承映射部分做了几个测试的例子,更加直观的阐述了继承映射的几种方式以及对应的表结构方式,文件被分割成3部分 http://download.csdn.net/source/259075 http://download.csdn.net/source/259072 ...
本篇主要探讨的是Hibernate中的继承映射策略,特别是“每个子类一张表”(Table per subclass)的方式。这种方式也被称为单表继承或多表继承,是Hibernate支持的四种继承映射策略之一。了解并熟练掌握这种映射模式...