<?xml version="1.0" encoding="windows-1252"?>
<node id="994720" title="Re^2: new module pl2sql" created="2012-09-20 14:25:19" updated="2012-09-20 14:25:19">
<type id="11">
note</type>
<author id="385566">
tqisjim</author>
<data>
<field name="doctext">
&lt;p&gt;I would describe pl2sql as an ORM, as the name implies.  However, I would describe Class::DBI and the others as an ROM, since it maps database functions (normally implemented in SQL) to class methods.  Hence, Class::DBI defines numerous methods to correspond to their database equivalents.  For nomenclature, this ORM designation seems somewhat Orwellian- its name has an opposite meaning.  In fact, a Class::DBI object is exactly an RDB table represented as a Perl object.&lt;/p&gt;
&lt;p&gt;PL2SQL takes the opposite approach.  It provides automatic persistence (in an RDB table) of any arbitrary complex object.  PL2SQL has two methods:  The first assigns the object to a designated table via a unique ID.  The second retrieves the object.  It also uses a "Universal table definition" which provides reusability.  Finally, a single table can be applied to numerous object types, instead of the one-to-one correspondence required of Class::DBI.&lt;/p&gt;
&lt;p&gt;In fact, the "Universal table definition" is based on an XML representation of an arbitrary object.  I lack the expertise to precisely place this module in the Universal jingo taxonomy, but based on Wikipedia, I would describe it as an &lt;a href="http://en.wikipedia.org/wiki/XML_database"&gt;XML-enabled XML database&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I took the liberty of posting your response on my website and my response there is structured a little differently.  You should have better luck reading the description, but you'll need to enable javascript in order to read the comments.  That feature is uses AJAX.&lt;/p&gt;
</field>
<field name="root_node">
994401</field>
<field name="parent_node">
994420</field>
</data>
</node>
