Java开辟2.0: 操纵Amazon SimpleDB实现云存储,第2部份[Java编程]
本文“Java开辟2.0: 操纵Amazon SimpleDB实现云存储,第2部份[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Java开辟2.0: 利用Amazon SimpleDB实现云存储,第2部份:利用SimpleJPA实现简单对象长期化
利用诸如 Grails 的关系框架对几近全部范例的利用举行域对象建模是很简单的,但是利用 SimpleDB 又怎么样呢?在 Andrew Glover 的介绍 SimpleDB 的系列文章的第 2 部份,他向您介绍了若何利用 SimpleJPA,而非 Amazon SDK,在 SimpleDB 的云存储中实现对象长期化.除了使您可以利用简单 Java™ 对象举行域建模(通过 JPA)之外,SimpleJPA 还可以自动地将基本数据范例转换成兼容 Amazon 的字符串.您确切找不到比这更简单的云存储办法了.
在介绍 SimpleDB 文章的 第一部份 中,我向您介绍了若何利用 Amazon 本身的 API 举行一个 CRUD 网络的竞走利用的建模.除了对大大都 Java 开辟人员而言,Amazon 只利用字符串来描写数据范例的办法的明显独特点之外,您大概发现自己关于 Amazon API 还有一些疑虑.毕竟,目前利用关系数据库的 API 已经非常尺度且成熟了 — 并且更重要的是,他们已经很熟习这些技术了.
除此之外,目前有很多关系框架实现了 Java Persistence API.因此为各种 RDBMS 举行各种范例的 Java 利用举行域对象建模都是非常简单和常见的.当您已经掌握了一种办法之后,很自然您会关于学习新的域对象建模办法会有一些冲突 — 而好消息是利用 SimpleDB 时,您不需求学习新东西.
在 SimpleDB 文章的第 2 部份中,我将向您介绍若何重构第 1 部份的竞走利用,使之符合 JPA 标准.然后我们将把利用移植到 SimpleJPA,并且探究一些可以使这个创新的开放源码平台经过调整而支持 NoSQL 域建模和基于云的存储的办法,这一样很简单.
为什么利用 SimpleDB?
Amazon 的 SimpleDB 是一个简单且极具可扩大性和坚固性的基于云的数据存储办法.由于它本质上是非关系/NoSQL,SimpleDB 既机动又快速.作为 Amazon Web Service 家族的一部份,SimpleDB 利用 HTTP 作为底层通信机制,所以它可以支持多种语言,包含 Java 语言、Ruby、C# 和 Perl.SimpleDB 价钱也很便宜:按照 SimpleDB 的受权方法,您只需求为您利用的资源支付费用,这跟按照预计利用和空间预先购置受权的传统办法很不一样.作为新兴的 NoSQL,或非关系数据存储的一部份,SimpleDB 是与 Google 的 Bigtable 或 CouchDB 相对应的,它们在 这些系列文章中 有呼应的介绍.
Hibernate 和 JPA:后台大要
目前有许很多多的 Java 开辟人员都利用 Hibernate(和 Spring)实现数据长期化.除了是最早成功的开放源码项目,Hibernate 也完好改变了 ORM 范畴.在呈现 Hibernate 之前,Java 开辟人员必须处理复杂的 EJB 实体 Bean;而在这之前,我们只能自己实现 ORM 大概利用来自诸如 IBM® 等供应商的产品.Hibernate 去掉了 EJB 的全部复杂性和开销,转而利用我们目前很多人都利用的基于 POJO 的建模平台.
Java Persistence API (JPA) 是由于 Hibernate 创新地利用 POJO 举行数据建模办法的风行而呈现的.目前,EJB 3.0 实现了 JPA,Google App Engine 也一样实现了 JPA.乃至假如您利用 Hibernate EntityManager,那么 Hibernate 本身也是一个 JPA 实现,
既然 Java 开辟人员已经越来越熟习利用 POJO 对以数据为中央的利用举行建模,那么可以说,SimpleDB 这样一个数据存储应当可以给我们供应一个近似的选项.毕竟,它与数据库有些类似,不是吗?
用对象举行数据建模
要利用 SimpleJPA,我们需求改正一下我们的 Racer 和 Runner 对象,使它们符合 JPA 标准.好在,JPA 基本要素是很简单的:给普通的 POJO 加上注释,而 EntityManager 实现会负责完成其他处理 — 不需求 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部份[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |