示例 2:使用 Java 的 SDO 类型定义
public interface Customer ...{
String getCustomerID();
void setCustomerID(String customerID);
String getFirstName();
void setFirstName(String firstName);
String getLastName();
void setLastName(String lastName);
String getStockSymbol();
void setStockSymbol(String stockSymbol);
int getStockQuantity();
void setStockQuantity(int stockQuantity);
}
一旦 SDO 类型定义好,就可以通过将类型定义传递给 SDO 数据工厂 (data factory) 来将其实例化(为数据对象分配存储空间)。这个工厂仅仅是运行时的一个组件,它的功能就是根据 SDO 类型定义实例化 SDO 数据对象。
示例 3 和示例 4 分别展示了如何通过传递 XML Schema 名称空间和复杂的类型名称(在示例 1 中定义的)或者 Java 接口类(在示例 2 中定义的)作为参数来创建 SDO。
示例 3: 使用 XML Schema 名称空间和复杂的类型名称参数创建 SDO
DataObject customer = DataFactory.INSTANCE.create("http://www.myvalue.com", "Customer");
示例 4:使用具有 Java 接口类参数的 SDO DataFactory 创建 SDO
Customer customer = (Customer) DataFactory.INSTANCE.create(Customer.class);
在 SDO 实例化之后,实现就可以访问它了。示例 5 和示例 6 中的代码示例分别展示了对 Customer SDO 的动态和静态访问。
示例 5:动态访问 SDO
DataObject customer = ... ;
customer.setString("customerID", customerID);
...
customer.setInt("stockQuantity", 100);
String customerID = customer.getString("customerID");
...
int stockQuantity = customer.getInt("stockQuantity");
示例 6:静态访问 SDO
Customer customer = ... ;
customer.setCustomerID(customerID);
...
customer.setStockQuantity(100);
String customerID = customer.getCustomerID();
...
int stockQuantity = customer.getStockQuantity();
我们使用访问 XML 文件服务和关系数据库的例子来进一步说明由 SDO 推动的编程模型的简单性。请注意,尽管技术之间存在差异,但是这些应用程序是如此的相似。应用程序开发人员能够专注于业务逻辑,而让服务去处理更新持久数据存储的实现细节。
示例 7: XML 文件服务
这个简单的例子将数据从 XML 文件加载到 SDO 数据图,打印并更新数据,然后将它写回文件。(业务目标是将“quot;Adam”改为“Kevin”。)
根据根 XML 元素和一个多值的 customer 属性定义将要作为根 customers 数据对象读入的 XML 文件。在 XML 文件中 Customers 为每个 customer 元素包含一个数据对象。每个 customer 具有两个属性:SN 和 firstName。 |
|
| 读取文件数据。 |
|
| 遍历 customer 数据对象列表并打印出每个名 (first name)。 |
|
将第一个客户数据对象的 firstName 属性设为 Kevin。中间件更新变更摘要(这里并没有显示出来)来指示改变了的数据。 |
|
| 将数据对象写入文件。 |
|
| 结果是更新的 XML 文档。 |
|
