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

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

 2010-09-16 00:00:00 来源:WEB开发网   
核心提示: 清单 12. 使用 SimpleJPA 处理关系Runnerrunner=newRunner();runner.setName("MarkSmith");runner.setSsn("555-55-5555");runner.setRace(race);r

清单 12. 使用 SimpleJPA 处理关系

Runner runner = new Runner(); 
runner.setName("Mark Smith"); 
runner.setSsn("555-55-5555"); 
runner.setRace(race); 
race.addRunner(runner); 
  
em.persist(runner); 
em.persist(race); //update the race now that it has a runner 

从 清单 12 我们也可以看到,我需要更新 Race 实例,这样我所添加的 Runner 才会被存储起来(同时,我给 Race 函数添加了一个 addRunner 函数,它只是直接将一个 Runner 添加到 Runner 内部的 Collection。)

再一次,如果我通过它的实例搜索一个比赛,我也可以得到它的一组选手,如清单 13 所示:

清单 13. 更多有趣的关系操作!

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 races : race){ 
 System.out.println(race); 
 List<Runner> runners = race.getRunners(); 
 for(Runner rnr : runners){ 
 System.out.println(rnr); 
 } 
} 

使用 EntityManager 实例使我能够通过 remove 函数删除一些实体,如清单 14 所示:

清单 14. 删除一个类的实例

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 races : race){ 
 em.remove(race); 
} 

当我在 清单 14 中删除了一个 Race 实例,所关联的 Runners 并没有删除。(当然,我可以使用 JPA 的 EntityListeners 注释来处理这个问题,这意味着我可以监控删除事件,在事件发生时删除 Runner 实例。)

结束语

这篇 SimpleDB 的快速教程向您介绍了如何使用 Amazon Web Services API 和 SimpleJPA 来处理非关系数据存储的对象。SimpleJPA 实现了一部分的 Java Persistence API 来简化 SimpleDB 的对象持久化。您已经看到,使用 SimpleJPA 的其中一个好处是它能够自动地将基本数据类型转换为 SimpleDB 能识别的字符串对象。SimpleJPA 也能够自动地处理 SimpleDB 中的非联合规则,从而简化它的关系建模。SimpleJPA 扩展的监听接口也使它能够实现逻辑数据统一规则,这是您在关系数据库所希望使用的。

SimpleJPA 的关键是它能够帮助您快速简单且廉价地实现重要的可扩展性。通过 SimpleJPA,您可以在非关系的、基于云的存储环境中利用您在多年的工作中所接触到的诸如 Hibernate 等框架的知识。

上一页  4 5 6 7 8 9 

Tags:Java 开发 使用

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