WEB开发网
开发学院软件开发Java Java 开发 2.0: 使用 Amazon SimpleDB 实现云存储... 阅读

Java 开发 2.0: 使用 Amazon SimpleDB 实现云存储,第 2 部分:使用 SimpleJPA 实现简单对象持久化

 2010-09-16 00:00:00 来源:WEB开发网   
核心提示: 清单 9. 创建一个 RaceRacerace=newRace();race.setName("CharlottesvilleMarathon");race.setLocation("Charlottesville,VA");race.setDistanc

清单 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 所示:

上一页  3 4 5 6 7 8 9  下一页

Tags:Java 开发 使用

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