从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缓存.
缓存的配置:
同上面的类似,也分为三个层次的.
中国最大的web开发资源网站及技术社区,