- 类图:
- PersistentCriteria 类层次
- 概述:PersistentObject封装了使单个对象持久化的行为。而PersistentCriterai 类层次支持一次保存、获取、删除多个对象。
- 方法:
- addSelectXXX():PersistentCriteria类的addSelectXXX()是一组方法,XXX可代表:GreaterThan,LitterThan,EqualTo等。
- 两个参数:
- 一个参数是类的属性
- 另一个是值。
- 返回:这个方法返回对应的 SelectionCriteria的子类实例。
- 例如:addSelectGreaterThan()创建一个GreaterThanCriteria实例而 addSelectEqualTo()创建一个EqualToCriteria实例。
- 两个参数:
- addOrCriteria()方法:它以一个PeristentCriteria的实例作为参数并有郊使用“或”逻辑将两个条件连在一起。
- addSelectXXX():PersistentCriteria类的addSelectXXX()是一组方法,XXX可代表:GreaterThan,LitterThan,EqualTo等。
- 属性:
- forClass:它指示了被处理的对象的类型,例如可能是Employee或者Invoice对象。
- isSubclassesIncluded:批示了是否条件也应用于 forClass 子类。
- 总结:这两个属性有效的支持了继承中的多态性。
- 例如:这两个属性的组合以及 addSelectXXX()方法可以使我们对满足特定条件的Person对象及 其子类的实例进行操作。如:名字开头为“J”并且出生在1996年6月14日到1997年8月14日之间的Person对象和它的子类的实例
- SelectionCriteria类层次:
- 概述:封装了用来比较指定值与某个属性的行为。每种比较类型(等于、大于、小于、小于等于、大于等于)有一个子 类。注意:它的实例通过使用“与”逻辑与其它实例关联。(“或”逻辑由orCirteria()方法实现)
- RetrieveCriteria类
- 概述:这个类用于获持久数据。它支持获取零个或多个对象、代理对象、记录或者一个游标。为什么这样就不细说了。
- DeleteCriteria类:
- 概述:支持一次删除多个对象。同时支持标识删除(makeForDeletion())和直接删除(permanentlyDelete())。注意:DeleteCriteria 类的实例创建一个UpdateCriteria的实例,更新对应表的deletionDateTime或者isDeleted字段。
- UpdateCriteria类:
- 概述:支持同时更新一组对象的一个或多个属性。
- 方法:
- Perform()方法:这个方法首先通过RetrieveCriteria的实例获得要被更新的对象,然后循环将它们的属性赋予新值,最后发送一个save() 消息给每个对象来钭对象写回持久机制。