快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
实现进行普通的关系数据库存储差别不大。即使您从未使用过 JPA 开发应用,那么对于您来说它也不会有太大的困难。唯一的新东西是要配置 SimpleJPA 的 EntityManagerFactoryImpl,这要求使用您的 Amazon Web Services 证书和您的 SimpleDB 域的前缀名。(另一个方法是在编译路径上增加一个包含您的证书的属性文件。)

在创建一个 SimpleJPA EntityManagerFactoryImpl 实例时使用您指定的前缀名,这样产生的 SimpleDB 域会由您的前缀,加一根横杠,再加域对象名称组成。所以,如果我指定 “b50” 为前缀,而我在 SimpleDB 中创建一个 Race,那么这个域将会是 “b50-Race”。

一旦您创建一个 SimpleDB EntityManagerFactoryImpl 实例,其他方面就由这个接口完成了。您需要使用一个 EntityManager 实例,这个实例是从 EntityManagerFactoryImpl 获取的,如清单 8 所示:

清单 8. 获得一个 EntityManager

Map<String,String> props = new HashMap<String,String>(); props.put("accessKey","..."); props.put("secretKey",".."); EntityManagerFactoryImpl factory =    new EntityManagerFactoryImpl("b50", props); EntityManager em = factory.createEntityManager();

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

时间:2010-10-26 IBM Andrew Glover

处理域对象

一旦您拥有了一个 EntityManager 对象,您就可根据需要处理域对象了。例如,我可以像下面一样创建一个 Race 实例:

清单 9. 创建一个 Race

Race race = new Race(); race.setName("Charlottesville Marathon"); race.setLocation("Charlottesville, VA"); race.setDistance(new BigDecimal(26.2)); em.persist(race);

在 清单 9 中,SimpleJPA 处理了所有 HTTP 请求来在云中创建 Race。使用 SimpleJPA 意味着我也能够使用一个 JPA 查询来查询比赛,如清单 10 所示。(记住您不能够联合这些查询,但是我仍然可以使用数字进行搜索。)

清单 10. 根据实例查找一个比赛

Query query = em.createQuery("select o from Race o where o.distance = :dist"); query.setParameter("dist", new BigDecimal(26.2)); List<Race> races = query.getResultList(); for(Race race : races){   System.out.println(race); }

从数字到字符串

例如,SimpleJPA 内部的数字到字符串转换的方法是非常有用的,如果您在 SimpleJPA 中启用查询输出,那么您可以看到有哪些查询发送到 SimpleDB。所提交的查询如清单 11 所示。注意 distance 是如何编码的。

清单 11. SimpleJPA 很好地处理数字!

amazonQuery: Domain=b50-Race, query=select * from `b50-Race`   where `distance` = ''0922337203685477583419999999999999928946''

自动填充和编码使开发更加简单,您不觉得吗?

SimpleJPA 中的关系

即使 SimpleDB 不允许查询中进行域联合,您也仍然可以在域中使用关联项。正如我在 第 1 部分 中介绍的,您在一个对象中存储另一个相关对象的键,然后在您需要时查询这个对象。这也正是 SimpleJPA 所做的。例如,之前我向您介绍了如何使用 JPA 注释将 Runner 链接到一个 Race。因此,我可以创建一个 Runner 实例,将现有的 race 添加到这个实例,然后再存储 Runner 实例,如清单 12 所示:

清单 12. 使用 SimpleJPA 处理关系

Runner runner = new Runner(); runner.setName("Mark Smith"); runner.setSsn("555-55-5555"); runner.setRace(race); rac

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