快速业务通道

Java开发2.0: 使用Amazon SimpleDB实现云存储,第2部分 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
— 不需要 XML。

JPA 所使用的两个主要的注释是 @Entity 和 @Id,这两个注释分别将一个 POJO 指定为持久化类,同时确定它的标识键。为了将我们的赛跑应用转换为 JPA,我们也将使用另外两个管理关系的注释:@OneToMany 和 @ManyToOne。

在本文的第 1 部分中,我已经向您介绍了如何持久化选手和比赛对象了。然而,我没有使用对象来表示这些实体 — 我只是使用了 Amazon 的原始 API 来存储这两个对象的属性。如果我希望对一个比赛和比赛选手的关系进行建模,那么我可以编写如清单 1 所示的代码:

清单 1. 一个简单的 Race 对象

public class Race {   private String name;   private String location;   private double distance;   private List<Runner> runners;   //setters and getters left out... }

在 清单 1 中,我给 Race 对象设置了 4 个属性,最后一个是一个选手 Collection。接下来,我可以创建一个简单的 Runner 对象(如清单 2 所示),它包含每位选手的姓名(现在我将尽量保持简单),与他/她所参加的 Race 实例相关的 SSN。

清单 2. 与 Race 相关的一个简单的 Runner

public class Runner {   private String name;   private String ssn;   private Race race;   //setters and getters left out... }

您可以从 清单 1 和 2 看到,我在选手和比赛之间逻辑上建立了一个多对一的关系。在实际情况中,可能多对多关系更准确些(选手一般会参加多个比赛),但是这里这样做是为了简单起见。另外,现在我也忽略构造函数、setter 和 getter。我将在后面向您介绍。

Java开发2.0: 使用Amazon SimpleDB实现云存储,第2部分(2)

时间:2010-10-26 IBM Andrew Glover

JPA 中的注释

要使这两个对象能够使用 SimpleJPA 并不是很难。首先,我需要通过为每个对象添加 @Entity 注释来将它们变成可持久化的。我也需要在 Race 对象中使用 @OneToMany,在 Runner 对象中使用 @ManyToOne 来正确定义它们的关系。

@Entity 注释是在类上标注的,而关系注释是在 getter 函数上标注的。这些注释见清单 3 和 4:

清单 3. JPA 注释的 Race

@Entity public class Race {   private String name;   private String location;   private double distance;   private List<Runner> runners;   @OneToMany(mappedBy = "race")   public List<Runner> getRunners() {   return runners;   }   //other setters and getters left out... }

在 清单 3 中,我使用 @OneToMany 注释来标注 getRunners 函数。我也在实例 Runner 的 race 属性上定义了一个关系。

在清单 4 中,我用类似的方法注释了 Runner 对象的 getRace 函数。

清单 4. JPA 注释的 Runner

@Entity public class Runner {   private String name;   private String ssn;   private Race race;   @ManyToOne   public Race getRace() {   return race;   }   //other setters and getters left out... }

大多数数据存储(关系型或非关系型)都需要某种描述数据唯一性的方法。所以如果我将这两个对象存储到数据存储中,我至少需要给它们添加 ID。在清单 5 中,我添加一个类型为 BigInteger 的 id 属性到 Race 域对象。在 Runner 对象中我会使用相同的做法。

清单 5. 给 Race 添加一个 ID

@Entity public class Race {   private String name;   private String location;   private double distance;   private List<Runner> runners;   private BigInteger id;   @Id   public BigInteger getId

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