从5.1final版开始,DO的缓存转换到DataStruct的缓存中.只有那些原始的DataStructs加入到新的DataStruct缓存中而不是所有的DO,DO只有一个数据(DataStruct对象).所有的转换是在这个对象上完成的, DataStruct对象包含了每个表的列的值,现在,DO保存了两个DataStruct引用. (1) orginalData (2) data orginalData保存了原始的数据(从数据库中读取),这个数据将不会被修改直到提交,而且如果缓存存在,则该DataStruct对象被加到DataStruce缓存中去. Data仅仅当数据被修改才会产生(拷贝orginalData),如果第二个DataStruct存在,那么DO的属性”isDirty”将被设置为true,即使经过一些修改之后,新的DataStruct保存了根orginalData一样的值.该DO仍然是脏的,所有没有办法让属性isDirty由true到false,除非在提交事务的过程中,如果事务被提交,新的DataStruct将会转移到orginalData.新的 DataStruct将会再次置为空,所有属性isDirty变为false. 一个新生成的DO(内存中,而不是数据库中)将只有一个DataStruct对象数据, orginalData中的orginalData数据值在提交之前为空.. oid和version属性从DO转移到DataStruct对象. DataStruct中新添加的属性有: isEmpty和databaseName DataStruct中新添加的方法有: getOID() setDatabase(String dbName) …….. DODS为每张表拥有缓存的可能.可能的缓存类型有:None,LRU.和FULL. DODS有两种层次的缓存. 数据缓存级.只有一个LRU缓存, 查询缓存级,可以有两个查询缓存(简单和复杂类型),这些查询缓存也是LRU缓存. 缓存的配置: 同上面的类似,也分为三个层次的.
|