千家信息网

Java的ChangeSummary怎么用

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要讲解了"Java的ChangeSummary怎么用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java的ChangeSummary怎么用
千家信息网最后更新 2026年10月31日Java的ChangeSummary怎么用

这篇文章主要讲解了"Java的ChangeSummary怎么用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java的ChangeSummary怎么用"吧!

ChangeSummary提供了访问数据图中数据对象的更改历史信息的机制。

更改历史覆盖了一个数据图自日志被激活开始的所有修改情况。如果日志不再处于激活状态,那么日志仅仅包括日志被冻结前的变更。否则它仅仅包括ChangeSummary被查询以来的变更情况。尽管只有在日志激活时,变更信息才开始被采集,但是无论无论日志被激活还是被关闭,你都可以查询变更信息。所有查询返回的信息都是只读的。

该接口具有下列方法:

  • 激活或冻结日志。

  • 当日志开始时,重建一个DataObjects树,并且清除日志。

  • 查询日志状态。

  • 获取ChangeSummary所属的DataGraph。

  • 获取ChangeSummary的根DataObject。

  • 获取修改过的DataObject。

  • 指出是否一个数据对象已经被创建、删除或被修改。

  • 在日志开始时,获取容器类型的DataObject。

  • 在日志开始时,获取DataObject所包含的属性。

  • 在日志开始时,获取DataObject的Sequence。

  • 获取一个特殊的旧值。

  • 获取一个旧值列表。

启动或停止一个更改日志

beginLogging()方法清除ChangeSummary中变更DataObject的列表并且启动一个更改日志。endLogging()方法停止更改日志。undoChanges()方法在日志开始时重建DataObject树,undoChanges()方法同时也清除日志,但是对isLogging()方法没有任何影响。

注意:beginLogging(), endLogging()以及 undoChanges()方法基本上是给服务实现使用的,这是由于服务定义了如何将ChangeSummary的处理与外部资源进行关联。ChangeSummary如果不能捕获产生的变更,这将可能会引起服务基于ChangeSummary的不完整信息去执行数据源的更新。

作用范围(Scope)

ChangeSummary的作用范围被定义为自ChangeSummary根开始的DataObject树所包含的所有数据对象。ChangeSummary根对象是所有变更被跟踪的源DataObject。可以通过getRootObject()方法获取ChangeSummary根对象。该对象是下列之一:

  • 将ChangeSummary作为其属性的一个值的数据对象。

  • 数据图的根数据对象

旧值(Old Values)

使用getOldValues(DataObject dataObject)方法可以取得一个旧值列表。旧值的返回顺序由实现具体决定。对于一个被删除的DataObject,旧值列表包含了该DataObject的所有属性。对于一个已经被修改过的DataObject来说,旧值列表仅仅包含被修改的属性。对于那些没有被删除和修改的DataObject来说,旧值列表为空。

旧值被描述为ChangeSummary.Setting对象(ChangeSummary.Setting是ChangeSummary的一个内部接口)。每一个ChangeSummary.Setting都有一个属性和一个值,同时还有一个用于指明属性是否为集合的标记。

如果一个DataObject 被删除或修改,那么getOldValue(DataObject dataObject, Property property)方法将返回一个用于描述指定属性的ChangeSummary.Setting,否则,它将返回null。如果旧值的setting.isSet()方法返回false,则该旧值没有任何意义。

顺序数据对象(Sequenced DataObject)

在日志开始时,getOldSequence(DataObject dataObject)方法将返回一个数据对象顺序的全部值。返回值可能为null。如果DataObject.getSequence()方法返回null,那么getOldSequence(DataObject dataObject)方法将返回null。

序列化与反序列化

当ChangeSummary被反序列化时,如果XML文件中有元素,那么其日志状态将为on,除非changeSummary标记日志为off。在下列条件下,一个序列化器必须在XML文件中生成一个元素:

  • 变更已经被日志记录(getChangedDataObjects().size() > 0)。

  • 没有变更被日志记录,但是在序列化时,isLogging()方法为true。在该情况下,一个空或者 元素被建立。

日志的状态被记录进changeSummary元素的logging属性。

ChangeSummary的序列化在日志启动时,包含了足够多的用来重构DataObject初始信息的信息。当日志启动时,新创建的数据图中的属性标签DataObject将不会被显示出来,删除的包含在ChangeSummary中的属性标签对象将不再包含在数据图中。标签可以是IDs,如果可用的话,也可以是sdo路径表达式。

ChangeSummary元素的内容可以是一个被删除的数据对象的深拷贝,也有可能是一个数据对象的原型,该原型仅仅拥有数据类型的变更以及已经改变过的属性的值。

关联更改摘要与数据对象

有两种可能的方式用于关联DataObject与ChangeSummary:

1、1、DataGraph使用getChangeSummary()方法获取一个ChangeSummary。

该方法通常在对于DataObject 树而言ChangeSummary为外部的情况下采用。ChangeSummary从根数据对象开始跟踪数据对象树的变化,根数据对象可以通过DataGraph的 getRootObject()方法获得。

2、DataObject的类型能够包括一个用于包含ChangeSummary的属性。

该方法常被用在ChangeSummary是DataObject树的一部分的情形下,例如当一个根DataObject是一个消息头,该消息头同时包含DataObject以及 ChangeSummary这二者的消息体。ChangeSummary从包含该ChangeSummary的DataObject开始跟踪DataObject树的变化。

更改摘要接口

ChangeSummary接口提供了下列方法:

  • 检查日志的状态,或者开关日志;

  • 当日志开始时,重做日志里的所有变化;

  • 返回根DataObject和DataGraph;

  • 返回已经被修改、创建或删除的DataObject;

  • 识别出已经发生的改变类型(修改、创建、删除);

  • 返回已经被更改或删除掉的数据对象的旧值;

public interface ChangeSummary

{

void beginLogging();

void endLogging();

boolean isLogging();

void undoChanges();

DataGraph getDataGraph();

DataObject getRootObject();

List /*DataObject*/ getChangedDataObjects();

boolean isCreated(DataObject dataObject);

boolean isDeleted(DataObject dataObject);

boolean isModified(DataObject dataObject);

DataObject getOldContainer(DataObject dataObject);

Property getOldContainmentProperty(DataObject dataObject);

Sequence getOldSequence(DataObject dataObject);

public interface Setting

{

Object getValue();

Property getProperty();

boolean isSet();

}

Setting getOldValue(DataObject DataObject, Property property);

List /*Setting*/ getOldValues(DataObject dataObject);

}

感谢各位的阅读,以上就是"Java的ChangeSummary怎么用"的内容了,经过本文的学习后,相信大家对Java的ChangeSummary怎么用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

日志 数据 方法 对象 属性 信息 序列 元素 情况 激活 状态 接口 类型 查询 内容 同时 标签 消息 顺序 图中 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司的优势 互联网金融公司科技 喔噻互联网科技 奇酷互联网络科技 奇酷互联网络科技公司 睿民互联网科技 顺玮阁互联网科技 互联网科技有限公司 翻译 中盈科技互联网信息有限公司 电子科技大学互联网创业大赛 晋城互联网科技 玉溪新华互联网科技好不好 朱啸虎曾投资哪些互联网科技企业 华中科技大学互联网的牛人 沐思想互联网科技有限公司 互联网公司高科技产品 易租星互联网科技有限公司 科技和互联网行业的特点 网互联网络科技 互联网 科技节活动 微视频大赛 广州紫鲸互联网科技 上海亿帐通互联网科技 互联网科技素材视频竖屏 山东吉时兔互联网科技有限公司 苏州五指互联网络科技有限 互联网科技产业特征 特约风豹互联网科技为什么扣费 新氧科技和美国互联网有关系吗 互联网金融金融科技 保山浩联互联网科技有限公司
0