SDO/DAS研究(2): SDO目标和技术特点

本文探讨了统一数据访问技术的需求,包括支持多种数据源的统一访问、静态与动态数据API的结合、断开使用的编程模型以及应用与数据访问的解耦。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1.       对异构数据源的统一数据访问。
当前的数据编程技术或多或少都是特定于数据源类型的。但是,在实际应用程序中,数据通常来自于各种数据源,包括关系数据库(通过JDBC、实EJB或其他持久性框架访问)、定制的数据访问层(使用各种常见的设计模式来实现)、 Web服务(通过JAXRPC或其他方法访问)、XML数据存储区、JMS消息和企业信息系统(通过JCA Resource Adapter或通过一些定制的API访问)。这种异质性对应用程序开发人员提出了严重的挑战,因为他们需要学习和使用大量不同的编程模型。过多的数据访问API也对试图自动化诸如绑定UI组件到后端数据源(例如:JSR227)之类的常见数据编程任务的工具和框架造成了很大挑战。因此,一个与数据源类型无关的、表示数据集合的通用工具可以为应用程序员提供更简单的统一编程模型,并为工具和框架提供在不同的数据源中以一致的方式使用的机会。
2.       对静态和动态数据API的统一支持
静态的强类型接口可以为应用程序员提供一种使用编程模型的简单方式。例如,实体EJBJDOHibernate以及其他对象/关系持久性机制提供类型化的Java数据接口(例如,account.getFirstName()account.getBalance())这为开发人员提供了一种方便的编程模型。相比之下,JDBCResultSet RowSet 接口只提供了动态的非类型化数据API。类似地,JAXBXML数据提供了代码生成的Java接口,这使XML数据编程比使用DOMSAX API更简单。
只有静态数据API或只有动态数据API是不够的:两者都是必需的。静态数据API提供应用程序员所需的易用性。但是在某些情况下,静态Java数据接口既不可行也不适合。例如,对于事先不知道结果数据的类型的动态查询,静态Java数据接口就不可行。因此,统一的数据编程技术需要同时无缝地支持静态和动态数据API
3.       对断开编程模型的支持
许多应用程序自然地包含数据访问的断开使用模式:应用程序读取一组数据,将其在本地保留一段短的时间,操纵数据,然后再将更改应用到数据源。例如,这在基于Web的应用程序中是非常常见的模式:一个Web客户端请求查看一个表单,一个ServletJSP请求本地读事务中的数据,并将数据呈现在HTML表单中,Web客户端提交对表单的更新,ServletJSP使用新的事务更新数据。最佳实践通常要求对该场景使用乐观并发语义,从而提供具有适当业务级语义的高级别并发。
目前没有哪一种数据访问技术能够同时提供这种断开的乐观模型以及前述的其他特性。JDBC扩展(通过JSR114中的CachedRowSet,“RowSet Implementations”)提供了断开模型,但是如前所述,JDBC不能满足异构数据访问或易用性的要求。类似地,许多对象/关系持久性机制(例如,许多实体EJB实现、JDOHibernate等等)虽然支持乐观并发语义,但是它们不提供必需的统一数据访问特性。
4.       应用代码与数据访问代码的去耦合性
为了获得可重用性和可维护性,应用代码应该与数据访问代码分离。数据访问技术应该服从这一关注点分离。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值