[PEAK] peak DMs and model element component hierarchy

Phillip J. Eby pje at telecommunity.com
Sat Jul 17 00:52:33 EDT 2004

At 11:42 PM 7/16/04 -0500, Doug Quale wrote:

>So, I'm not sure what to do with the connections.  I guess they are
>part of a composite id for the model objects because the same database
>names can be found on different servers, same table names in different
>databases on the same server, etc.  The original code takes the
>unclean approach of throwing everything into an Active Record.  Using
>a more proper domain model and separate DMs is cleaner, but I don't
>know how to manage the many connections that the DMs need.

As you said, they are part of a composite ID.  Let the DM keep a cache of 
database URLs to connection objects, something like:

     cache = binding.Make(dict)

     def getConnForURL(self,url):
             return self.cache[url]
         except KeyError:
             conn = self.lookupComponent(url,adaptTo=storage.ISQLConnection)
             self.cache[url] = conn
             return conn

And then use the connection URL as part of the OID of the relevant objects.

More information about the PEAK mailing list