> Whatever you are doing, you are doing the "wrong
> thing".
> 
> You are instantiating persistent objects and not storing
> them in the
> ZODB. This is going to cause your ZODB to grow, so you
> might as well
> store them.
> 
> Otherwise you need to make non-persistent versions of the
> objects you
> are trying to 'cache' and use those instead.
> 
> -- 
> Andrew Milton
> [EMAIL PROTECTED]

Not exactly. I am instantiating non persistent objects that do have a reference 
to persistence objects in the form of an attribute, and then trying to cache 
those non persistent objects.

Do the fact that these non persistent objects store a reference to persistent 
ones turn them into persistent ? I am curious to know.

Anyway, I tried the volatile attribute thing 
(http://wiki.zope.org/ZODB/VolatileAttributes) and first tests look fine.

This is how I did the trick :

===================
ZODBLivinObject.py
===================

from OFS.SimpleItem import SimpleItem
from NonZODBObject import NonZODBObject


class ZODBLivingObject(SimpleItem) :
    """
    Hello, I live in the ZODB.
    """
    meta_type = "ZODBish"
    def __init__(self):
        """
        """
        self.id = "ZODBish"
        self.title = "ZODBish"

    def sayHi(self):
        """
        """
        # NonZODBObject stores a reference of self, a ZODB-living object.
        nonZODBish = NonZODBObject(self)
        # This line breaks everything. Comment it and every thing will be just 
right.
        # self.REQUEST.SESSION.set('breakish',nonZODBish)
        self.setNonZODBish(nonZODBish)
        # This can be seen in the console if runzope
        print "it's me",nonZODBish.context
        return nonZODBish.context

    def setNonZODBish(self,p_nonZODBish):
        """
        """
        setattr(self,'_v_NonZODBish',p_nonZODBish)

    def getNonZODBish(self):
        """
        """
        if not hasattr(self,"_v_NonZODBish"):
            self.setNonZODBish(None)
        return self._v_NonZODBish


And then I use the setNonZODBish et getNonZODBish methods to set and access the 
cached value.











      
_______________________________________________
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )

Reply via email to