DODS学习日记(五)
类别: JAVA教程
从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缓存.
缓存的配置:
同上面的类似,也分为三个层次的.
-= 资 源 教 程 =-
文 章 搜 索