JPA继承关系详解(2)
来源:互联网 发布:快递打印软件注册码 编辑:程序博客网 时间:2024/05/29 11:33
虽然student与teacher有些许属性重复,但似乎传统方式在完成student与teacher没有什么问题,创建并不复杂…但如果,我们增加新的对象,医生,矿工,消防员,警察,程序员…这样看来传统方式并不适用…这就需要继承映射,Hbernate,TopLink等O-R映射框架都支持继承映射,在此,我会为大家讲解EJB3.0 JPA规范的继承映射!
学生,与老师共有的属性,属于所有人类都拥有的属性,故我们可以创建及Person类,来保存共有属性,而学生与老师继承自Person类,增加了自己的属性.
关键字 :Inheritance
对象使用引用以便关联到其它对象;关系型数据库表之间采用外键来描述表的关系。在关系型数据库中通常没有自然且有效的方法来描述类的继承关系。JPA通过Inheritance annotation提供了几种继承策略,它有以下属性:
InheritanceType strategy:用来声明继承策略。可选值是InheritanceType.SINGLE_TABLE、InheritanceType.JOINED和InheritanceType .TABLE_PER_CLASS。
缺省值是InheritanceType.SINGLE_TABLE。
关于Inheritance的更多内容,可以参考<< Hibernate实战>> by Christian Bauer, Gavin King。
一:
InheritanceType.SINGLE_TABLE 策略为类的继承体系采用同一个表。表名是基类的名称。例如:
首先创建父类:Person.java
Student.java
Teacher.java
执行单元测试,生成数据库表:
mysql> desc teacher;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | UNI | NULL | |
| sex | varchar(5) | NO | | NULL | |
| teach | varchar(20) | NO | | NULL | |
+-------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
sql语句是:
CREATE TABLE `person` (
`DTYPE` varchar(31) NOT NULL,
`id` int(11) NOT NULL AUTO_INCREMENT,
`age` int(11) NOT NULL,
`name` varchar(20) NOT NULL,
`sex` varchar(5) NOT NULL,
`study` varchar(20) DEFAULT NULL,
`teach` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
UNIQUE KEY `study` (`study`),
UNIQUE KEY `teach` (`teach`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
其中的DTYPE,是记录Person的具体子类型的!我们向数据库表输入数据!
查看数据库表:
但是,这样将所有对象保存在一个表中,增加了表的容量,这就需要使用InheritanceType.JOINED
- JPA继承关系详解(2)
- JPA继承关系详解(1)
- JPA继承关系详解(3)
- JPA支持继承关系
- EJB/JPA继承详解
- EJB/JPA 继承详解(转)
- JPA实体继承关系的映射策略
- JPA入门(2)--继承
- 继承关系映射详解
- JPA入门(3)--继承2
- JPA对象关系模型之继承映射策略
- Hibernate之jpa实体映射的三种继承关系
- Hibernate之jpa实体映射的三种继承关系
- jpa继承
- JPA:继承
- Maven POM文件详解以及继承关系
- hibernate详解(七)---映射继承关系
- Hibernate/JPA中的继承映射 实体extends的关系(每个子类独立一个表)
- AT指令说明
- プロジェクト・マネジャーの適性と資質--PMにかかわる自身の適性を知り必要な資質を磨く
- 用C#实现生成PDF文档和将WORD转换为PDF (转自海东的技术资料)
- 通过Windows Mobile连接管理器建立网络连接【Establishing Network Connectivity with the Windows Mobile Connection Manager】
- 优秀程序员的十个习惯
- JPA继承关系详解(2)
- X$KCCLE
- C# 获取光标在屏幕上的位置
- DLL和EXE的配合
- 用jQuery合并表格中相同文本的相邻单元格(一)
- 程序碎片- 生产线动态规划(循环)
- 仿真实训实验室的研发
- 柏拉图名言
- Wireshark图解教程(简介、抓包、过滤器)