Java标准版的EJBPersistence(三).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java标准版的EJBPersistence(三).doc

Java标准版的EJB Persistence (三) 作者: DJ Walker-Morgan 在前几部分里,我们已经讨论过了Java SE的JPA的基本保持元素。在本文里,我们将看一个示例应用程序,并详细讨论如何在你的开发中应用JPA。 首先,让我们来看看示例应用程序的要求,这个程序可以在这里下载。这是一个关于许可证管理的应用程序。在这个例子里,有很多应用程序,每个程序都有多个版本,每个版本都有一个或者多个与之相关的许可证。还有一组用户,他们可能与这许可证中的任何一个相关联。我们想要创建一个能够管理所有这些元素的应用程序。 现在就让我们从实体开始。它们都在自己的程序包里,而没有与应用程序的代码混在一起。这样做是值得的;在大型项目里,你可以将实体作为单独的项目来处理,这样就可以更容易地在其他项目里重复使用它们。我们创建了4个实体:Application、Version、Licence和User,所以让我们具体看看每个实体的作用。 在Application类里,我们与Version类具有一对多的关系。下面是Application方法的一部分;我们跳过了其中的id和name属性,因为它们与我们先前讨论过的内容类似。 @Entity public class Application { ????... ????private ListVersion versions=new ArrayListVersion(); ????... ????@OneToMany(mappedBy=application,cascade=CascadeType.ALL) ????public ListVersion getVersions() { ??????return versions; ????} ????... } 上个月,我们讲过了mappedBy参数。本文里的新东西是cascade(层叠)参数。这个cascade参数用来控制persistence引擎进行操作从而影响数据库其他表格的能力。在默认情况下是没有层叠的,所以对集合的更改要求你明确地管理集合的内容。查看一下其他CascadeType的值会发现其中隐含的操作:ALL、PERSIST、MERGE、REMOVE、REFRESH。例如,设置CascadeType.PERSIST将只会层叠保持对象,所以如果一个新的Version实例被加到版本列表里,那么更新Application实例就会进行层叠操作,以便在底层数据里保存新的Version。CascadeType.MERGE会应用相同的规则来进行更新,而CascadeType.REMOVE同样会删除集合里的内容。CascadeType.REFRESH用来从数据库里重新读取实例进行层叠操作;我们将在后面讨论它。 我们现在来看Version类。我们已经有了与Application的多对一(@ManyToOne)关系以及另外一个层叠集合,现在我们就来看看许可证。 @Entity public class Version { ????... ????private Application application; ????private SetLicence licences=new HashSetLicence(); ????... ????@ManyToOne ????public Application getApplication() { ?????? return application; ????} ????... ????@OneToMany(mappedBy=version,cascade=CascadeType.ALL) ????public SetLicence getLicences() { ?????? return licences; ????} ????... } 顺着程序的思路走下来,我们看到了Licence类。层叠在这里结束。 @Entity public class Licence { ????... ????private Version version; ????private SetUser users=new HashSetUser(); ????... 我们还有一个集合来表示一组用户。到版本的映射由@ManyToOne批注来处理。 @ManyToOne public Version getVersion() { ????return version; } 现在我们来到了这个示例中最重要的映射部分;很多许可证可以参考很多用户,所有我们使用@ManyToMany(多对多)批注来表示这种情况。 @ManyToMany @JoinTable(name=LicenceUsers, ????joinColumns=,

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档