WEB开发网
开发学院软件开发Java 使用 Apache OpenJPA 开发 EJB 3.0 应用,第 4 部... 阅读

使用 Apache OpenJPA 开发 EJB 3.0 应用,第 4 部分: 实体关联

 2010-04-19 00:00:00 来源:WEB开发网   
核心提示: 级联删除对象 下面的这段代码演示了只需要通过 Query 对象,就可以在删除 Book 类的同时,使用 Apache OpenJPA 开发 EJB 3.0 应用,第 4 部分: 实体关联(10),删除它对应的 BookExtend 实体对象的情况,请注意其中用粗体标识出的部分,文章的最后简单的介

级联删除对象

下面的这段代码演示了只需要通过 Query 对象,就可以在删除 Book 类的同时,删除它对应的 BookExtend 实体对象的情况。请注意其中用粗体标识出的部分。

/* 获得 EJB 的实体管理器 */ 
EntityManagerFactory emf = Persistence.createEntityManagerFactory(null); 
EntityManager em = emf.createEntityManager(PersistenceContextType.EXTENDED); 
/* 开始事务 */ 
em.getTransaction().begin(); 
/* 使用查询删除对象,可以不必将对象加入到内存中,提高效率 */ 
Query q = entityManager.createQuery("delete from Book c WHERE c.id=:id"); 
int id = book.id; 
/* 设置被删除 Book 对象的主键值 */ 
q.setParameter("id", id); 
/* 当方法被调用时,Book 对象对应的 BookExtend 对象会同时被删除 */ 
q.executeUpdate(); 
 
/* 结束事务 */ 
em.getTransaction().commit(); 
em.close(); 
emf.close(); 

其它几种关联关系

在上面的文章中我们学习了如何在 OpenJPA 中通过 javax.persistence.OneToOne 注释和 javax.persistence.JoinColumn 注释实现实体之间的一对一关联关系。在企业应用中,除了一对一关联关系,实体之间还可能存在一对多、多对一、多对多等关联关系,不过在 OpenJPA 容器中,这些实体之间关联关系的实现都大同小异,只是需要开发者选择使用不同的注释。

开发者用来描述实体之间一对多关联关系的注释是 javax.persistence.OneToMany 注释,用来描述实体之间多对一关联关系的注释是 javax.persistence.OneToMany 注释,用来描述实体之间多对多关联关系的注释是 javax.persistence.ManyToMany 注释。这三个注释都支持 targetEntity、mappedBy、cascade 和 fetch 这四个属性,这些属性的具体含义和 OneToOne 注释注释的同名属性一一对应,请大家参考前面章节中的内容。

javax.persistence.OneToMany、 javax.persistence.OneToMany、javax.persistence.ManyToMany 这三个注释都可以和 javax.persistence.JoinColumns 注释一起使用,javax.persistence.JoinColumns 注释的作用是为一对多、多对一、多对多关联关系在数据库中的体现提供更多细节描述。javax.persistence.JoinColumns 注释中可以包含多个 javax.persistence.JoinColumn 注释的内容,javax.persistence.JoinColumn 注释的属性请参考本文前面部分的描述。

总结

对象和对象之间除了继承关系之外,还存在着关联关系,包括一对一、一对多、多对一和多对多的关系,本文中,作者以实体之间的一对一关联关系为例,结合企业应用中的实际例子,详细地描述了如何在 OpenJPA 框架下通过注释简单的描述实体和实体之间的关联关系,并且实现实体的级联操作。文章的最后简单的介绍了 OpenJPA 中实现实体之间一对多、多对一和多对多关联关系时需要用到的注释,这些注释的用法和描述一对一关联关系时大体一致,如何通过描述实现实体之间一对多、多对一和多对多关联关系请大家参考本文中的内容自行完成。

本文示例源代码或素材下载

上一页  5 6 7 8 9 10 

Tags:使用 Apache OpenJPA

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接