快速业务通道

使用Apache OpenJPA开发EJB 3.0应用,第3部分: 实体继承 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
习惯,也能够符合关系数 据库设计的范式要求,而且数据库中的数据冗余最小。TABLE_PER_CLASS 和 SINGLE_TABLE 方式下的对象继承关系持久化的例子请读者参考下面的步骤自己完 成。

实体类 Animal

首先我们创建实体类 Animal,它是 Fish 和 Dog 的父类。因此必须为它处理 提供 javax.persistence.Inheritance 注释。我们选择使用 JOINED 策略处理继 承关系,因此设置 javax.persistence.Inheritance 注释的 strategy 属性为 InheritanceType.JOINED。

清单 1 Animal.java, 继承关系的父类

1. package chapter04.entity; 2. import javax.persistence.Entity; 3. import javax.persistence.Id; 4. import javax.persistence.Inheritance; 5. import javax.persistence.InheritanceType; 6. 7. @Entity 8. @Inheritance(strategy = InheritanceType.JOINED) 9. public class Animal { 10. @Id 11. private int id; 12. 13. private String name; 14. 15. public Animal() { 16. } 17. 18. public Animal(int id, String name) { 19.  this.id = id; 20.  this.name = name; 21. } 22. 23. public int getId() { 24.  return id; 25. } 26. 27. public void setId(int id) { 28.  this.id = id; 29. } 30. 31. public String getName() { 32.  return name; 33. } 34. 35. public void setName(String name) { 36.  this.name = name; 37. } 38. 39. }

使用Apache OpenJPA开发EJB 3.0应用,第3部分: 实体继承(5)

时间:2011-08-31 IBM 肖菁

实体类 Fish

实体类 Fish 是 Animal 的子类,因此它必须继承自 Animal。同时根据 OpenJPA 的要求,每一个实体必须使用 javax.persistence.Entity 进行注释, 因此在 Fish 类声明之前提供 javax.persistence.Entity 注释。

清单 2 Fish.java, 继承关系中的子类

1. package chapter04.entity; 2. 3. import javax.persistence.Entity; 4. 5. @Entity 6. public class Fish extends Animal { 7. /* 鱼的活动范围,比如江、河、湖、海 */ 8. private String territory; 9. 10. public Fish() { 11. } 12. 13. public Fish(int id, String name, String territory) { 14.  super(id, name); 15.  this.territory = territory; 16. } 17. 18. public String getTerritory() { 19.  return territory; 20. } 21. 22. public void setTerritory(String territory) { 23.  this.territory = territory; 24. } 25. 26. }

实体类 Dog

实体类 Dog 是 Animal 的子类,因此它必须继承自 Animal。和 Fish 类一样 ,我们需要在 Dog 类声明之前提供 javax.persistence.Entity 注释。

清单 3 Dog.java, 继承关系中的子类

1. package chapter04.entity; 2. 3. import javax.persistence.Entity; 4. 5. @Entity 6. public class Dog extends Animal { 7. /* 性别 */ 8. private String sex; 9. 10. public Dog() { 11. } 12. 13. public Dog(int id, String name, String sex) { 14.  super(id, name); 15.  this.sex = sex; 16. } 17. 18. public String getSex() { 19.  return sex; 20. } 21. 22. public void setSex(String sex) { 23.  this.sex = sex; 24. } 25. 26. }

使用Apache OpenJPA开发EJB 3.0应用,第3部分: 实体继承(6)

时间:2011-08-31 IBM 肖菁

创建合适的数据库表

我们可以使用下面的语句创建数据库表:

CREATE TABLE ANIMAL(ID INTEGER NOT NULL PRI

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号