SDO for Java规范(一)——架构
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的海宁网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
数据对象是SDO框架的核心。数据对象是一个业务对象的一般表达,并且没有和特殊的持久化存储机制绑定。
数据图是一个相关数据对象的集合。在SDO1.0里,一个数据图总是被一个DataGraph信封对象所包装,而在SDO2.0里,数据对象图可以存在于DataGraph之外。(数据图)Data graph作为两个单词分开使用时,指任何一个数据对象集合;(数据图)DataGraph作为一个单一单词使用时,特指一个DataGraph信封对象。
所有数据图都有一个单一的根数据对象,它直接或间接的包含图里的所有其它数据对象。当的数据图里的所有数据对象仅仅引用自身的数据对象时,我们称该数据图是封闭的。封闭是一个数据图的标准状态。
一个数据图由以下组成:
一个封闭的数据图形成了一个数据对象的树形结构。数据图能够记录跟踪描述数据对象的模式。数据图同样也可以维护一个更改概要(ChangeSummary),ChangeSummary表达了施加于该图数据对象之上的更改。
图1,数据图包含数据对象
对于终端用户而言,访问数据图的标准方式是通过数据访问服务(DAS)。DAS提供了从库中加载数据图和将数据图保存回库中的方法。例如,一个XML文件DAS将加载和保存一个数据图为XML文件,一个JDBC DAS将使用一个关系数据库加载和保存一个数据图。针对其它特殊的DAS的规范超出了本规范的范围。
经典的DAS使用了一个非连接的数据架构,客户端除了在读写数据图时,均和DAS保持一个非连接的状态。因而,一个使用数据图的典型场景涉及以下步骤:
图2 SDO的非连接数据结构
注意有两个特别的角色能够能够用来区分数据对象用户:客户和DAS writer。
客户需要能够纵览整个数据图去访问每一个数据对象并且能够获取和设置每一个数据对象域的能力。客户也需要序列化和反序列化一个数据图。如使用XML DAS时,数据图能够被序列化一个XML。
DAS writer必须能够为数据图定义一个模型,创建一个新的数据图,产生更改历史信息,并且能够访问更改历史信息。
一个数据图包含一个(更改概要)ChangeSummary,通过ChangeSummary,能够访问数据图中任何一个数据对象的更改历史。当DAS返回一个数据图时,ChangeSummary应该是空的。如果DAS的客户修改了数据对象的状态,例如创建或者删除,这些更改的概要将被记录在ChangeSummary中。
如果一个客户端将一个修改后的数据图发送给DAS,DAS将会进行数据图的错误性检查,这些错误主要包括数据图是否缺少封闭,属性值是否越界,由树形子图生成的属性或数据对象的选择,不同的约束或者任何针对DAS的特殊限制(如XML模式的特殊校验)。这里,封闭(Closure)指任何一个该数据图的数据对象的引用均指向自身内部的一个对象。通常,DAS使用异常报告更新的问题。
一个数据图可能没有封闭,此时,终端用户可以临时通过数据对象接口修改该数据图所包含的数据对象。然而在所有的用户操作完成后,数据图将重建一个封闭。DAS只能操作带有封闭的数据图。