快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
MARY  KEY,NAME VARCHAR(255)) CREATE TABLE DOG(ID INTEGER NOT NULL PRIMARY KEY,SEX VARCHAR (255)) CREATE TABLE FISH(ID INTEGER NOT NULL PRIMARY KEY,TERRITORY  VARCHAR(255))

[注] 使用 OpenJPA 中的 MappingTool 工具可以很容易的保持 Entity 和数 据库之间的一致性,也可以使用 MappingTool 工具生成的数据库定义文件(DDL )创建应用正常运行所需要的数据库结构。请参考 OpenJPA 的帮助文档中关于 MappingTool 部分的内容。

持久化实体

使用 OpenJPA 持久化实体的继承关系时,开发者只需要按照面向对象的思想 操纵实体即可,无需为实体的继承关系作多余的工作。下面的章节中我们将了解 持久化实体 Animal、Fish、Dog 时开发者需要完成的工作以及 OpenJPA 转化后 在关系数据库中的实现细节。

持久化 Animal

我们可以使用下面的代码段来持久化一个新的 Animal 对象:

1. // 通过 Persistence 创建 EntityManagerFactory 2. EntityManagerFactory factory =  Persistence.createEntityManagerFactory( 3.  "jpa-unit", System.getProperties()); 4. 5. // 从 EntityManagerFactory 中创建 EntityManager 6. EntityManager em = factory.createEntityManager(); 7. 8. // 开始持久化实体的事务 9. em.getTransaction().begin(); 10. 11. // 使用相同的方式持久化实体 12. em.persist(new Animal(1,"honey")); 13. 14. // 提交持久化实体的事务 15. em.getTransaction().commit(); 16. 17. // 关闭EntityManager 18. em.close();

当我们执行这段代码时,OpenJPA 会将它转化为关系数据库对应的 SQL 语句 :

INSERT INTO Animal (id, name) VALUES (1, ''honey'')

[注] 如果您还不知道如何使用 OpenJPA 持久化对象,请阅读 本系列 前面的 文章,了解 OpenJPA 开发的基本知识。

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

时间:2011-08-31 IBM 肖菁

持久化 Fish

Fish 对象的持久化和 Animal 实体的持久化过程没有任何的不同,只不过 persist 方法的参数变成了 Fish 对象。我们可以使用下面的代码段来持久化一 个新的 Fish 对象,请注意下面代码中加粗的部分。

1. // 通过 Persistence 创建 EntityManagerFactory 2. EntityManagerFactory factory =  Persistence.createEntityManagerFactory( 3.  "jpa-unit", System.getProperties()); 4. 5. // 从 EntityManagerFactory 中创建 EntityManager 6. EntityManager em = factory.createEntityManager(); 7. 8. // 开始持久化实体的事务 9. em.getTransaction().begin(); 10. 11. // 使用相同的方式持久化实体 12. em.persist(new Fish(2,"mermaid","SEA")); 13. 14. // 提交持久化实体的事务 15. em.getTransaction().commit(); 16. 17. // 关闭EntityManager 18. em.close();

由于 Fish 对象的属性保存在两个表中,因此当我们执行这段代码时, OpenJPA 会将它转化为对应的两条 SQL 语句:

INSERT INTO Animal (id, name) VALUES (2, ''mermaid'') INSERT INTO Fish (id, territory) VALUES (2, ''SEA'')

持久化 Dog

持久化 Dog 对象和持久化 Fish 对象的过程几乎一样,区别是 persist 方法 的参数变成了 Dog 对象。

em.persist(new Dog(3,"ba guai","MALE"));

和持久化 Fish 对象时一样,Dog 对象的属性也保存在两个表中,因此当我们 执行这段代码时,OpenJPA 会将它转化为对应的两条 SQL 语句:

INSERT INTO Animal (id, name) VALUES (3, 

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号