调用代码
上面的代码中,我们已经准备好了符合要求的持久化类,下面我们看看 OpenJPA 中如何调用这两个类完成 Book 类和 BookExtend 类的创建、修改、删除工作。
由于篇幅的关系,这些没有讲述如何编译、加强这些类并且准备相应的配置文件来完成整个项目开发环境的建立,这部分的内容请参考另外一篇文章《OpenJPA:符合 EJB3 规范的持久层框架》。
级联新建对象
下面的这段代码演示了只需要调用 Book 类的 persist 方法就同时持久化 Book 类对象和 BookExtend 类对象的情况。请注意其中用粗体标识出的部分。
|
/* 获得 EJB 的实体管理器 */ /* 创建新的 BookExtend 对象 */ /* 持久化对象,只需要持久化 Book 对象,不需要单独持久化 bookExtend 对象 */ /* 结束事务 */ |
产生的 SQL 语句
下面的这段 SQL 语句是运行上面的代码时 OpenJPA 自动生成的,我们可以从中看到 OpenJPA 级联新建对象时的处理过程:
| -- 创建 Book 实体对应的数据库表 -- CREATE TABLE Book (ID INTEGER NOT NULL AUTO_INCREMENT, NME VARCHAR(255), extendID INTEGER, PRIMARY KEY (ID)); -- 创建 BookExtend 实体对应数据库表 -- CREATE TABLE BookExtend (ID INTEGER NOT NULL AUTO_INCREMET, NAME VARCHAR(255), PRIMARY KEY (ID)) ; -- 将 Book 实体对象插入数据库中 -- INSERT INTO Book (NAME) VALUES (‘<<Web Services实践>>’) -- 获取 Book 实体对象的编号 -- SELECT LAST_INSERT_ID(); -- 将 BookExtend 实体对象插入数据库中 -- INSERT INTO BookExtend (NAME) VALUES (‘前言 本书重点说明了...’) ; --获取 BookExtend 实体对象的编号 -- SELECT LAST_INSERT_ID(); -- 将 BookExtend 实体对象的编号更新到Book表中形成关联关系 -- UPDATE Book SET extendID = 1 WHERE ID = 1; |

