openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Roytman, Alex" <Roytm...@peacetech.com>
Subject RE: Why would Kodo refuse to batch inserts in certain tables? Big performance drop migrating to Kodo 4.1
Date Tue, 17 Oct 2006 21:06:26 GMT
Marc,

Kodo 3.4 does it just fine. We are using latest 10.2.0.2 driver (and
prior versions before 10g including 9.2.0.5 and above) and it works fine
with batching. 

What's the problem anyway? May be it has long been resolved in one of
the oracle patch releases? We came to rely on batching so much so that
the loss of it affects performance dramatically (we have many small
objects). 
Can it be turned on and off? 
I will be happy to test it for you if you can tell me what to look for.

Thank you

Alex



-----Original Message-----
From: Marc Prud'hommeaux [mailto:mprudhomapache@gmail.com] On Behalf Of
Marc Prud'hommeaux
Sent: Tuesday, October 17, 2006 4:57 PM
To: open-jpa-dev@incubator.apache.org
Subject: Re: Why would Kodo refuse to batch inserts in certain tables?
Big performance drop migrating to Kodo 4.1

Alex-

Since the non-batched statement contains a Date field, this is due to  
the workaround for the Oracle JDBC driver bug I mentioned before.

Kodo will not batch statements that contains a Date field when  
interacting with Oracle.



On Oct 17, 2006, at 1:38 PM, Roytman, Alex wrote:

> Yes it will be wrapped by email though
>
>
>
> 15  WARN   [main] openjpa.Runtime - The property named
> "kodo.jdbc.SequenceFactory" was not recognized and will be ignored,
> although the name closely matches a valid property called
> "kodo.jdbc.SchemaFactory".
>
> 15  WARN   [main] openjpa.Runtime - The property named
> "kodo.jdbc.ClassIndicator" was not recognized and will be ignored,
> although the name closely matches a valid property called
> "kodo.jdbc.MappingFactory".
>
> 47  INFO   [main] openjpa.Runtime - Starting BEA Kodo 4.1.0 with
> patches:
>
>     Kodo JDO Utilities vtip-revision
>
> 62  INFO   [main] openjpa.jdbc.JDBC - Using dictionary class
> "org.apache.openjpa.jdbc.sql.OracleDictionary".
>
> 328  INFO   [main] openjpa.jdbc.JDBC - oracle-batch-override
>
> 1578  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 21057622 SELECT t0.JDO_LOCK, t0.IS_ACTIVE,
> t0.DEFAULT_VALUE, t0.DESCRIPTION, t0.IS_LOOKUP, t0.LOOKUP_SORT_ORDER,
> t0.IS_MULTI_VALUE FROM DTS.PROPERTY_DEFINITION t0 WHERE t0.NAME = ?
> [params=(String) IC]
>
> 1578  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 21057622 SELECT t0.JDO_LOCK, t0.IS_ACTIVE,
> t0.DEFAULT_VALUE, t0.DESCRIPTION, t0.IS_LOOKUP, t0.LOOKUP_SORT_ORDER,
> t0.IS_MULTI_VALUE FROM DTS.PROPERTY_DEFINITION t0 WHERE t0.NAME = ?
> [params=(String) DocType]
>
> 1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 21057622 SELECT t0.JDO_LOCK, t0.IS_ACTIVE,
> t0.DEFAULT_VALUE, t0.DESCRIPTION, t0.IS_LOOKUP, t0.LOOKUP_SORT_ORDER,
> t0.IS_MULTI_VALUE FROM DTS.PROPERTY_DEFINITION t0 WHERE t0.NAME = ?
> [params=(String) GC]
>
> 1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 21057622 SELECT t0.JDO_LOCK, t0.IS_ACTIVE,
> t0.DEFAULT_VALUE, t0.DESCRIPTION, t0.IS_LOOKUP, t0.LOOKUP_SORT_ORDER,
> t0.IS_MULTI_VALUE FROM DTS.PROPERTY_DEFINITION t0 WHERE t0.NAME = ?
> [params=(String) ClauseId]
>
> 1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 15513215 INSERT INTO DTS.DOCUMENT  
> (DOCUMENT_NODE_ID,
> DOCUMENT_NUMBER, TEMPLATE_ID, ORG_UNIT_ID, PREPARER, TITLE,
> IS_PUBLISHED, PUBLISH_DATE) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
> [params=(long) 529800, (String) {529800}, (long) 9432, (long) 1,  
> (long)
> 1, (null) null, (int) 0, (null) null]
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
> (DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK)  
> VALUES
> (?, ?, ?, ?, ?, ?) [params=(long) 529802, (String) preferences, (long)
> 2117, (null) null, (int) 520, (int) 1]
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
> (DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK)  
> VALUES
> (?, ?, ?, ?, ?, ?) [params=(long) 529801, (String) preferences, (long)
> 2116, (null) null, (int) 520, (int) 1]
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
> (DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK)  
> VALUES
> (?, ?, ?, ?, ?, ?) [params=(long) 529802, (String) address, (long)  
> 2117,
> (null) null, (int) 510, (int) 1]
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
> (DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK)  
> VALUES
> (?, ?, ?, ?, ?, ?) [params=(long) 529801, (String) address, (long)  
> 2116,
> (null) null, (int) 510, (int) 1]
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
> (DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK)  
> VALUES
> (?, ?, ?, ?, ?, ?) [params=(long) 529801, (String) address, (long)  
> 2116,
> (null) null, (int) 510, (int) 1]
>
> 1640  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [15
> ms] spent
>
> 1640  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 6169134 INSERT INTO DTS.DOCUMENT_NODE
> (DOCUMENT_NODE_ID, OWNER_DOCUMENT, LOCAL_ROOT, PARENT, NAME,
> CREATE_DATE, UPDATE_DATE, UPDATE_USER, JDO_CLASS, JDO_LOCK) VALUES (?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?) [params=(long) 529800, (long) 529800,  
> (long)
> 529800, (null) null, (String) d529800, (Date) 2006-10-16, (Date)
> 2006-10-16, (String) dts.test, (int) 440, (int) 1]
>
> 1640  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1640  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 1440568 INSERT INTO DTS.DOCUMENT_NODE
> (DOCUMENT_NODE_ID, OWNER_DOCUMENT, LOCAL_ROOT, PARENT,
> PARENT_SORT_ORDER, NAME, CONTENT_ID, ORIGINAL_CONTENT,  
> REFERENCE_NUMBER,
> IS_GROUP, IS_SELECTED_BY_USER, IS_SELECTED_BY_RULE, CREATE_DATE,
> UPDATE_DATE, UPDATE_USER, JDO_CLASS, JDO_LOCK) VALUES  
> (?, ?, ?, ?, ?, ?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [params=(long) 529801, (long) 529800,
> (long) 529800, (long) 529800, (int) 0, (String) t1, (long) 2116,  
> (null)
> null, (null) null, (int) 0, (null) null, (int) 0, (Date) 2006-10-16,
> (Date) 2006-10-16, (String) dts.test, (int) 430, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [16
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 1440568 INSERT INTO DTS.DOCUMENT_NODE
> (DOCUMENT_NODE_ID, OWNER_DOCUMENT, LOCAL_ROOT, PARENT,
> PARENT_SORT_ORDER, NAME, CONTENT_ID, ORIGINAL_CONTENT,  
> REFERENCE_NUMBER,
> IS_GROUP, IS_SELECTED_BY_USER, IS_SELECTED_BY_RULE, CREATE_DATE,
> UPDATE_DATE, UPDATE_USER, JDO_CLASS, JDO_LOCK) VALUES  
> (?, ?, ?, ?, ?, ?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [params=(long) 529802, (long) 529800,
> (long) 529800, (long) 529801, (int) 0, (String) t1.1, (long) 2117,
> (null) null, (null) null, (int) 0, (null) null, (int) 0, (Date)
> 2006-10-16, (Date) 2006-10-16, (String) dts.test, (int) 430, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529802, (String) IC, (String) IC1, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529801, (String) ClauseId, (String) CRS, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529802, (String) GC, (String) CRS, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529800, (String) DocType, (String) RFP, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529802, (String) GC, (String) EDUC, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529801, (String) GC, (String) CRS, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529802, (String) ClauseId, (String) CRS, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529800, (String) IC, (String) NHLBI, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529802, (String) IC, (String) IC2, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529801, (String) GC, (String) EDUC, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529800, (String) IC, (String) NCI, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529801, (String) IC, (String) IC1, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529801, (String) IC, (String) IC2, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529801, (String) IC, (String) IC2, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
>
>
>
>
>
>
>
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects
> Metadata 2.0//EN" "http://java.sun.com/dtd/jdo_2_0.dtd">
>
> <jdo>
>
>   <package name="com.peacetech.dts.jdo">
>
>
>
>     <interface name="com.peacetech.dts.ApplicationProperty"/>
>
>
>
>     <class name="ApplicationPropertyImpl" table="APPLICATION_PROPERTY"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.ApplicationPropertyImpl$OID">
>
>       <implements name="com.peacetech.dts.ApplicationProperty"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="name" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="value">
>
>         <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="250" scale="0"/>
>
>       </field>
>
>       <field name="modifiable" null-value="exception">
>
>         <column name="MODIFIABLE" jdbc-type="DECIMAL" sql- 
> type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="runtimeModifiable" null-value="exception">
>
>         <column name="RUNTIME_MODIFIABLE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="256" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Attribute"/>
>
>
>
>     <class name="AttributeImpl" table="ATTRIBUTE"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.AttributeImpl$OID">
>
>       <implements name="com.peacetech.dts.Attribute"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="ATTRIBUTE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="name" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="200" scale="0"/>
>
>       </field>
>
>       <field name="active" null-value="exception">
>
>         <column name="IS_ACTIVE" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="shared" null-value="exception">
>
>         <column name="IS_SHARED" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="lookup" null-value="exception">
>
>         <column name="IS_LOOKUP" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="lookupSortOrder" null-value="exception"
> persistence-modifier="persistent" default-fetch-group="true">
>
>         <extension vendor-name="kodo" key="externalizer"
> value="toSqlValue"/>
>
>         <extension vendor-name="kodo" key="factory"
> value="fromSqlValue"/>
>
>         <column name="LOOKUP_SORT_ORDER" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="9" scale="0"/>
>
>       </field>
>
>       <field name="multiValue" null-value="exception">
>
>         <column name="IS_MULTI_VALUE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>       <field name="required" null-value="exception">
>
>         <column name="IS_REQUIRED" jdbc-type="DECIMAL" sql- 
> type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="defaultValue">
>
>         <column name="DEFAULT_VALUE" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="100" scale="0"/>
>
>       </field>
>
>       <field name="lookupValues" table="ATTRIBUTE_LOOKUP"
> mapped-by="attribute"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.AttributeLookupImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="AttributeImpl.lookupValues"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.AttributeLookup"/>
>
>
>
>     <class name="AttributeLookupImpl" table="ATTRIBUTE_LOOKUP"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.AttributeLookupImpl$OID">
>
>       <implements name="com.peacetech.dts.AttributeLookup"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="attributeId" primary-key="true"
> null-value="exception">
>
>         <column name="ATTRIBUTE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="code" primary-key="true" null-value="exception">
>
>         <column name="CODE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="16" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="120" scale="0"/>
>
>       </field>
>
>       <field name="shortDescription">
>
>         <column name="SHORT_DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="64" scale="0"/>
>
>       </field>
>
>       <field name="sortOrder" null-value="exception">
>
>         <column name="SORT_ORDER" jdbc-type="DECIMAL" sql- 
> type="NUMBER"
> length="9" scale="0"/>
>
>       </field>
>
>       <field name="attribute"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="ATTRIBUTE_ID" target="ATTRIBUTE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="AttributeLookupImpl.attribute"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Component"/>
>
>
>
>     <class name="ComponentImpl" table="COMPONENT"
> identity-type="application"
> persistence-capable- 
> superclass="com.peacetech.dts.jdo.TemplateNodeImpl">
>
>       <implements name="com.peacetech.dts.Component"/>
>
>
>
>       <inheritance strategy="new-table">
>
>         <join>
>
>           <column name="TEMPLATE_NODE_ID" target="TEMPLATE_NODE_ID"/>
>
>         </join>
>
>         <discriminator value="110"/>
>
>       </inheritance>
>
>       <field name="released" null-value="exception">
>
>         <column name="IS_RELEASED" jdbc-type="DECIMAL" sql- 
> type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="effectiveDate">
>
>         <column name="EFFECTIVE_DATE" jdbc-type="DATE" sql-type="DATE"
> length="7" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="200" scale="0"/>
>
>       </field>
>
>       <field name="preparer"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="PREPARER" target="EMPLOYEE_ID" jdbc- 
> type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ComponentImpl.preparer"/>
>
>       </field>
>
>       <field name="orgUnit"  null-value="exception">  <!-- N-1  
> (ref) -->
>
>         <column name="ORG_UNIT_ID" target="ORG_UNIT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ComponentImpl.orgUnit"/>
>
>       </field>
>
>       <field name="container"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="CONTAINER_ID" target="CONTAINER_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ComponentImpl.container"/>
>
>       </field>
>
>        <field name="attributes" table="COMPONENT_ATTRIBUTE"> <!-- M-N
> -->
>
>         <collection element- 
> type="com.peacetech.dts.jdo.AttributeImpl"/>
>
>         <join>
>
>           <column name="TEMPLATE_NODE_ID" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         </join>
>
>         <element>
>
>           <column name="ATTRIBUTE_ID" target="ATTRIBUTE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         </element>
>
>         <order column="SORT_ORDER"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ComponentImpl.attributes"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Container"/>
>
>
>
>     <class name="ContainerImpl" table="CONTAINER"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.ContainerImpl$OID">
>
>       <implements name="com.peacetech.dts.Container"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="300"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="CONTAINER_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="name" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="48" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="400" scale="0"/>
>
>       </field>
>
>       <field name="parent" >  <!-- N-1 (ref) -->
>
>         <column name="PARENT" target="CONTAINER_ID" jdbc- 
> type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContainerImpl.parent"/>
>
>       </field>
>
>       <field name="subNodes" table="CONTAINER" mapped-by="parent">  
> <!--
> 1-N -->
>
>         <collection element- 
> type="com.peacetech.dts.jdo.ContainerImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContainerImpl.subNodes"/>
>
>       </field>
>
>       <field name="properties" table="CONTAINER_PROPERTY"
> mapped-by="container"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.ContainerPropertyImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContainerImpl.properties"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.ContainerProperty"/>
>
>
>
>     <class name="ContainerPropertyImpl" table="CONTAINER_PROPERTY"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.ContainerPropertyImpl$OID">
>
>       <implements name="com.peacetech.dts.ContainerProperty"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="containerId" primary-key="true"
> null-value="exception">
>
>         <column name="CONTAINER_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="nameId" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="value" primary-key="true" null-value="exception">
>
>         <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="container"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="CONTAINER_ID" target="CONTAINER_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContainerPropertyImpl.container"/>
>
>       </field>
>
>       <field name="definition"  null-value="exception">  <!-- N-1  
> (ref)
> -->
>
>         <column name="NAME" target="NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContainerPropertyImpl.definition"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Content"/>
>
>
>
>     <class name="ContentImpl" table="CONTENT"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.ContentImpl$OID">
>
>       <implements name="com.peacetech.dts.Content"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="200"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="CONTENT_ID" jdbc-type="DECIMAL" sql- 
> type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="tocTitle">
>
>         <column name="TOC_TITLE" jdbc-type="VARCHAR" sql- 
> type="VARCHAR2"
> length="500" scale="0"/>
>
>       </field>
>
>       <field name="shortTitle">
>
>         <column name="SHORT_TITLE" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="80" scale="0"/>
>
>       </field>
>
>       <field name="longTitle">
>
>         <column name="LONG_TITLE" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="200" scale="0"/>
>
>       </field>
>
>       <field name="text">
>
>         <column name="TEXT" jdbc-type="CLOB" sql-type="CLOB"  
> length="-1"
> scale="0"/>
>
>       </field>
>
>       <field name="instructions">
>
>         <column name="INSTRUCTIONS" jdbc-type="CLOB" sql-type="CLOB"
> length="-1" scale="0"/>
>
>       </field>
>
>       <field name="fields" table="CONTENT_FIELD" mapped-by="content">
> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.ContentFieldImpl"/>
>
>         <order column="SORT_ORDER"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContentImpl.fields"/>
>
>       </field>
>
>       <field name="rules" table="TEMPLATE_RULE" mapped-by="content">
> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.TemplateRuleImpl"/>
>
>         <order column="CONTENT_SORT_ORDER"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContentImpl.rules"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.ContentField"/>
>
>
>
>     <class name="ContentFieldImpl" table="CONTENT_FIELD"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.ContentFieldImpl$OID">
>
>       <implements name="com.peacetech.dts.ContentField"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="contentId" primary-key="true" null- 
> value="exception">
>
>         <column name="CONTENT_ID" jdbc-type="DECIMAL" sql- 
> type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="name" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="40" scale="0"/>
>
>       </field>
>
>       <field name="dataType">
>
>         <column name="DATA_TYPE" jdbc-type="VARCHAR" sql- 
> type="VARCHAR2"
> length="20" scale="0"/>
>
>       </field>
>
>       <field name="format">
>
>         <column name="FORMAT" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="30" scale="0"/>
>
>       </field>
>
>       <field name="required">
>
>         <column name="REQUIRED" jdbc-type="VARCHAR" sql- 
> type="VARCHAR2"
> length="80" scale="0"/>
>
>       </field>
>
>       <field name="label">
>
>         <column name="LABEL" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="60" scale="0"/>
>
>       </field>
>
>       <field name="attributes" null-value="exception"
> persistence-modifier="persistent" default-fetch-group="true">
>
>         <extension vendor-name="kodo" key="externalizer"
> value="com.peacetech.dts.jdo.helpers.Externalizers.fromStringMap"/>
>
>         <extension vendor-name="kodo" key="factory"
> value="com.peacetech.dts.jdo.helpers.Externalizers.toStringMap"/>
>
>         <column name="ATTRIBUTES" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="512" scale="0"/>
>
>       </field>
>
>       <field name="multiValue" null-value="exception">
>
>         <column name="IS_MULTI_VALUE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>       <field name="inputValues" null-value="exception"
> persistence-modifier="persistent" default-fetch-group="true">
>
>         <extension vendor-name="kodo" key="externalizer"
> value="com.peacetech.dts.jdo.helpers.Externalizers.fromStringMap"/>
>
>         <extension vendor-name="kodo" key="factory"
> value="com.peacetech.dts.jdo.helpers.Externalizers.toStringMap"/>
>
>         <column name="INPUT_VALUES" jdbc-type="CLOB" sql-type="CLOB"
> length="-1" scale="0"/>
>
>       </field>
>
>       <field name="content"  null-value="exception">  <!-- N-1  
> (ref) -->
>
>         <column name="CONTENT_ID" target="CONTENT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContentFieldImpl.content"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Document"/>
>
>
>
>     <class name="DocumentImpl" table="DOCUMENT"
> identity-type="application"
> persistence-capable- 
> superclass="com.peacetech.dts.jdo.DocumentNodeImpl">
>
>       <implements name="com.peacetech.dts.Document"/>
>
>
>
>       <inheritance strategy="new-table">
>
>         <join>
>
>           <column name="DOCUMENT_NODE_ID" target="DOCUMENT_NODE_ID"/>
>
>         </join>
>
>         <discriminator value="440"/>
>
>       </inheritance>
>
>       <field name="documentNumber" null-value="exception">
>
>         <column name="DOCUMENT_NUMBER" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>       </field>
>
>       <field name="title">
>
>         <column name="TITLE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="200" scale="0"/>
>
>       </field>
>
>       <field name="published" null-value="exception">
>
>         <column name="IS_PUBLISHED" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>       <field name="publishDate">
>
>         <column name="PUBLISH_DATE" jdbc-type="DATE" sql-type="DATE"
> length="7" scale="0"/>
>
>       </field>
>
>       <field name="preparer"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="PREPARER" target="EMPLOYEE_ID" jdbc- 
> type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentImpl.preparer"/>
>
>       </field>
>
>       <field name="orgUnit"  null-value="exception">  <!-- N-1  
> (ref) -->
>
>         <column name="ORG_UNIT_ID" target="ORG_UNIT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentImpl.orgUnit"/>
>
>       </field>
>
>       <field name="attributes" table="DOCUMENT_ATTRIBUTE"
> mapped-by="document"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.DocumentAttributeImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentImpl.attributes"/>
>
>       </field>
>
>       <field name="relatedDocuments" table="RELATED_DOCUMENT"
> mapped-by="source"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.RelatedDocumentImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentImpl.relatedDocuments"/>
>
>       </field>
>
>       <field name="relatedToDocuments" table="RELATED_DOCUMENT"
> mapped-by="target"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.RelatedDocumentImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentImpl.relatedToDocuments"/>
>
>       </field>
>
>       <field name="template"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="TEMPLATE_ID" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentImpl.template"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentAttribute"/>
>
>
>
>     <class name="DocumentAttributeImpl" table="DOCUMENT_ATTRIBUTE"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.DocumentAttributeImpl$OID">
>
>       <implements name="com.peacetech.dts.DocumentAttribute"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="documentNodeId" primary-key="true"
> null-value="exception">
>
>         <column name="DOCUMENT_NODE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="attributeId" primary-key="true"
> null-value="exception">
>
>         <column name="ATTRIBUTE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="value">
>
>         <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="100" scale="0"/>
>
>       </field>
>
>       <field name="attribute"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="ATTRIBUTE_ID" target="ATTRIBUTE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentAttributeImpl.attribute"/>
>
>       </field>
>
>       <field name="document"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="DOCUMENT_NODE_ID" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentAttributeImpl.document"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentField"/>
>
>
>
>     <class name="DocumentFieldImpl" table="DOCUMENT_FIELD"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.DocumentFieldImpl$OID">
>
>       <implements name="com.peacetech.dts.DocumentField"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="500"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="documentNodeId" primary-key="true"
> null-value="exception">
>
>         <column name="DOCUMENT_NODE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="nameId" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="40" scale="0"/>
>
>       </field>
>
>       <field name="definition"  null-value="exception">  <!-- N-1  
> (ref)
> -->
>
>         <column name="CONTENT_ID" target="CONTENT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <column name="NAME" target="NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="40" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentFieldImpl.definition"/>
>
>       </field>
>
>       <field name="topic"  null-value="exception">  <!-- N-1 (ref) -->
>
>         <column name="DOCUMENT_NODE_ID" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentFieldImpl.topic"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentNode"/>
>
>
>
>     <class name="DocumentNodeImpl" table="DOCUMENT_NODE"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.DocumentNodeImpl$OID">
>
>       <implements name="com.peacetech.dts.DocumentNode"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="400"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="DOCUMENT_NODE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="name" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="64" scale="0"/>
>
>       </field>
>
>       <field name="createDate">
>
>         <column name="CREATE_DATE" jdbc-type="DATE" sql-type="DATE"
> length="7" scale="0"/>
>
>       </field>
>
>       <field name="updateDate">
>
>         <column name="UPDATE_DATE" jdbc-type="DATE" sql-type="DATE"
> length="7" scale="0"/>
>
>       </field>
>
>       <field name="updateUser">
>
>         <column name="UPDATE_USER" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>       </field>
>
>       <field name="localRoot"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="LOCAL_ROOT" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodeImpl.localRoot"/>
>
>       </field>
>
>       <field name="parent" >  <!-- N-1 (ref) -->
>
>         <column name="PARENT" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodeImpl.parent"/>
>
>       </field>
>
>       <field name="subNodes" table="DOCUMENT_NODE" mapped-by="parent">
> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.DocumentNodeImpl"/>
>
>         <order column="PARENT_SORT_ORDER"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodeImpl.subNodes"/>
>
>       </field>
>
>       <field name="properties" table="DOCUMENT_NODE_PROPERTY"
> mapped-by="documentNode"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.DocumentNodePropertyImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodeImpl.properties"/>
>
>       </field>
>
>       <field name="ownerDocument"  null-value="exception">  <!-- N-1
> (ref) -->
>
>         <column name="OWNER_DOCUMENT" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodeImpl.ownerDocument"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentNodeProperty"/>
>
>
>
>     <class name="DocumentNodePropertyImpl"
> table="DOCUMENT_NODE_PROPERTY" identity-type="application"
> objectid-class="com.peacetech.dts.jdo.DocumentNodePropertyImpl$OID">
>
>       <implements name="com.peacetech.dts.DocumentNodeProperty"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="documentNodeId" primary-key="true"
> null-value="exception">
>
>         <column name="DOCUMENT_NODE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="nameId" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="value" primary-key="true" null-value="exception">
>
>         <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="documentNode"  null-value="exception">  <!-- N-1
> (ref) -->
>
>         <column name="DOCUMENT_NODE_ID" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodePropertyImpl.documentNode"/>
>
>       </field>
>
>       <field name="definition"  null-value="exception">  <!-- N-1  
> (ref)
> -->
>
>         <column name="NAME" target="NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodePropertyImpl.definition"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentRelationshipType"/>
>
>
>
>     <class name="DocumentRelationshipTypeImpl"
> table="DOCUMENT_RELATIONSHIP_TYPE" identity-type="application"
> objectid-class="com.peacetech.dts.jdo.DocumentRelationshipTypeImpl 
> $OID">
>
>       <implements name="com.peacetech.dts.DocumentRelationshipType"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="DOCUMENT_RELATIONSHIP_TYPE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="9" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="120" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Employee"/>
>
>
>
>     <class name="EmployeeImpl" table="EMPLOYEE"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.EmployeeImpl$OID">
>
>       <implements name="com.peacetech.dts.Employee"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="610"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="EMPLOYEE_ID" jdbc-type="DECIMAL" sql- 
> type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="firstName">
>
>         <column name="FIRST_NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>       </field>
>
>       <field name="lastName">
>
>         <column name="LAST_NAME" jdbc-type="VARCHAR" sql- 
> type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="middleName">
>
>         <column name="MIDDLE_NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.OrgUnit"/>
>
>
>
>     <class name="OrgUnitImpl" table="ORG_UNIT"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.OrgUnitImpl$OID">
>
>       <implements name="com.peacetech.dts.OrgUnit"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="600"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="ORG_UNIT_ID" jdbc-type="DECIMAL" sql- 
> type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="name">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="128" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.PropertyDefinition"/>
>
>
>
>     <class name="PropertyDefinitionImpl" table="PROPERTY_DEFINITION"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.PropertyDefinitionImpl$OID">
>
>       <implements name="com.peacetech.dts.PropertyDefinition"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="name" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="200" scale="0"/>
>
>       </field>
>
>       <field name="active" null-value="exception">
>
>         <column name="IS_ACTIVE" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="lookup" null-value="exception">
>
>         <column name="IS_LOOKUP" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="lookupSortOrder" null-value="exception"
> persistence-modifier="persistent" default-fetch-group="true">
>
>         <extension vendor-name="kodo" key="externalizer"
> value="toSqlValue"/>
>
>         <extension vendor-name="kodo" key="factory"
> value="fromSqlValue"/>
>
>         <column name="LOOKUP_SORT_ORDER" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="9" scale="0"/>
>
>       </field>
>
>       <field name="multiValue" null-value="exception">
>
>         <column name="IS_MULTI_VALUE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>       <field name="defaultValue">
>
>         <column name="DEFAULT_VALUE" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>       </field>
>
>       <field name="lookupValues" table="PROPERTY_LOOKUP"
> mapped-by="definition"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.PropertyLookupImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="PropertyDefinitionImpl.lookupValues"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.PropertyLookup"/>
>
>
>
>     <class name="PropertyLookupImpl" table="PROPERTY_LOOKUP"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.PropertyLookupImpl$OID">
>
>       <implements name="com.peacetech.dts.PropertyLookup"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="nameId" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="code" primary-key="true" null-value="exception">
>
>         <column name="CODE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="16" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="120" scale="0"/>
>
>       </field>
>
>       <field name="shortDescription">
>
>         <column name="SHORT_DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="64" scale="0"/>
>
>       </field>
>
>       <field name="sortOrder" null-value="exception">
>
>         <column name="SORT_ORDER" jdbc-type="DECIMAL" sql- 
> type="NUMBER"
> length="9" scale="0"/>
>
>       </field>
>
>       <field name="active" null-value="exception">
>
>         <column name="IS_ACTIVE" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="definition"  null-value="exception">  <!-- N-1  
> (ref)
> -->
>
>         <column name="NAME" target="NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="PropertyLookupImpl.definition"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.RelatedDocument"/>
>
>
>
>     <class name="RelatedDocumentImpl" table="RELATED_DOCUMENT"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.RelatedDocumentImpl$OID">
>
>       <implements name="com.peacetech.dts.RelatedDocument"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="sourceId" primary-key="true" null- 
> value="exception">
>
>         <column name="SOURCE" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="relationshipTypeId" primary-key="true"
> null-value="exception">
>
>         <column name="RELATIONSHIP_TYPE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="9" scale="0"/>
>
>       </field>
>
>       <field name="targetId" primary-key="true" null- 
> value="exception">
>
>         <column name="TARGET" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="notes">
>
>         <column name="NOTES" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="120" scale="0"/>
>
>       </field>
>
>       <field name="source"  null-value="exception">  <!-- N-1 (ref)  
> -->
>
>         <column name="SOURCE" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="RelatedDocumentImpl.source"/>
>
>       </field>
>
>       <field name="target"  null-value="exception">  <!-- N-1 (ref)  
> -->
>
>         <column name="TARGET" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="RelatedDocumentImpl.target"/>
>
>       </field>
>
>       <field name="relationshipType"  null-value="exception">  <!--  
> N-1
> (ref) -->
>
>         <column name="RELATIONSHIP_TYPE"
> target="DOCUMENT_RELATIONSHIP_TYPE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="9" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="RelatedDocumentImpl.relationshipType"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.TemplateNode"/>
>
>
>
>     <class name="TemplateNodeImpl" table="TEMPLATE_NODE"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.TemplateNodeImpl$OID">
>
>       <extension vendor-name="kodo" key="subclass-fetch-mode"
> value="none"/>
>
>       <implements name="com.peacetech.dts.TemplateNode"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="100"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="TEMPLATE_NODE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="name" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="64" scale="0"/>
>
>       </field>
>
>       <field name="createDate">
>
>         <column name="CREATE_DATE" jdbc-type="DATE" sql-type="DATE"
> length="7" scale="0"/>
>
>       </field>
>
>       <field name="updateDate">
>
>         <column name="UPDATE_DATE" jdbc-type="DATE" sql-type="DATE"
> length="7" scale="0"/>
>
>       </field>
>
>       <field name="updateUser">
>
>         <column name="UPDATE_USER" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>       </field>
>
>       <field name="parent" >  <!-- N-1 (ref) -->
>
>         <column name="PARENT" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodeImpl.parent"/>
>
>       </field>
>
>       <field name="subNodes" table="TEMPLATE_NODE" mapped-by="parent">
> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.TemplateNodeImpl"/>
>
>         <order column="PARENT_SORT_ORDER"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodeImpl.subNodes"/>
>
>       </field>
>
>       <field name="priorVersion" >  <!-- N-1 (ref) -->
>
>         <column name="PRIOR_VERSION" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodeImpl.priorVersion"/>
>
>       </field>
>
>       <field name="nextVersion" table="TEMPLATE_NODE"
> mapped-by="priorVersion"> <!-- 1-1 -->
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodeImpl.nextVersion"/>
>
>       </field>
>
>       <field name="properties" table="TEMPLATE_NODE_PROPERTY"
> mapped-by="templateNode"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.TemplateNodePropertyImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodeImpl.properties"/>
>
>       </field>
>
>       <field name="ownerComponent"  null-value="exception">  <!-- N-1
> (ref) -->
>
>         <column name="OWNER_COMPONENT" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodeImpl.ownerComponent"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.TemplateNodeProperty"/>
>
>
>
>     <class name="TemplateNodePropertyImpl"
> table="TEMPLATE_NODE_PROPERTY" identity-type="application"
> objectid-class="com.peacetech.dts.jdo.TemplateNodePropertyImpl$OID">
>
>       <implements name="com.peacetech.dts.TemplateNodeProperty"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="templateNodeId" primary-key="true"
> null-value="exception">
>
>         <column name="TEMPLATE_NODE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="nameId" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="value" primary-key="true" null-value="exception">
>
>         <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="definition"  null-value="exception">  <!-- N-1  
> (ref)
> -->
>
>         <column name="NAME" target="NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodePropertyImpl.definition"/>
>
>       </field>
>
>       <field name="templateNode"  null-value="exception">  <!-- N-1
> (ref) -->
>
>         <column name="TEMPLATE_NODE_ID" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodePropertyImpl.templateNode"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.TemplateRule"/>
>
>
>
>     <class name="TemplateRuleImpl" table="TEMPLATE_RULE"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.TemplateRuleImpl$OID">
>
>       <implements name="com.peacetech.dts.TemplateRule"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="RULE_ID" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="type" null-value="exception">
>
>         <column name="TYPE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="name">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="80" scale="0"/>
>
>       </field>
>
>       <field name="text">
>
>         <column name="TEXT" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="1024" scale="0"/>
>
>       </field>
>
>       <field name="content"  null-value="exception">  <!-- N-1  
> (ref) -->
>
>         <column name="CONTENT_ID" target="CONTENT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateRuleImpl.content"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.ComponentNode"/>
>
>
>
>     <class name="ComponentNodeImpl" identity-type="application"
> persistence-capable- 
> superclass="com.peacetech.dts.jdo.TemplateNodeImpl">
>
>       <implements name="com.peacetech.dts.ComponentNode"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="130"/>
>
>       </inheritance>
>
>       <field name="referenceNumber">
>
>         <column name="REFERENCE_NUMBER" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="16" scale="0"/>
>
>       </field>
>
>       <field name="ownedContent" table="CONTENT" mapped-by="owner">  
> <!--
> 1-1 -->
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ComponentNodeImpl.ownedContent"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Template"/>
>
>
>
>     <class name="TemplateImpl" identity-type="application"
> persistence-capable-superclass="com.peacetech.dts.jdo.ComponentImpl">
>
>       <implements name="com.peacetech.dts.Template"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="120"/>
>
>       </inheritance>
>
>       <field name="notes">
>
>         <column name="NOTES" jdbc-type="CLOB" sql-type="CLOB"
> length="-1" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.ShareNode"/>
>
>
>
>     <class name="ShareNodeImpl" identity-type="application"
> persistence-capable- 
> superclass="com.peacetech.dts.jdo.ComponentNodeImpl"
>>
>
>       <implements name="com.peacetech.dts.ShareNode"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="150"/>
>
>       </inheritance>
>
>       <field name="target"  null-value="exception">  <!-- N-1 (ref)  
> -->
>
>         <column name="SHARE_TARGET" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ShareNodeImpl.target"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentContent"/>
>
>
>
>     <class name="DocumentContentImpl" identity-type="application"
> persistence-capable-superclass="com.peacetech.dts.jdo.ContentImpl">
>
>       <implements name="com.peacetech.dts.DocumentContent"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="220"/>
>
>       </inheritance>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentFieldMultiValue"/>
>
>
>
>     <class name="DocumentFieldMultiValueImpl"
> identity-type="application"
> persistence-capable- 
> superclass="com.peacetech.dts.jdo.DocumentFieldImpl"
>>
>
>       <implements name="com.peacetech.dts.DocumentFieldMultiValue"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="520"/>
>
>       </inheritance>
>
>       <field name="values" default-fetch-group="false"
> null-value="exception" persistence-modifier="persistent">
>
>         <extension vendor-name="kodo" key="externalizer"
> value="com.peacetech.dts.jdo.helpers.Externalizers.fromStringCollectio

> n"
> />
>
>         <extension vendor-name="kodo" key="factory"
> value="com.peacetech.dts.jdo.helpers.Externalizers.toStringCollection"

> />
>
>         <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="1024" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.ShareLink"/>
>
>
>
>     <class name="ShareLinkImpl" identity-type="application"
> persistence-capable-superclass="com.peacetech.dts.jdo.ShareNodeImpl">
>
>       <implements name="com.peacetech.dts.ShareLink"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="160"/>
>
>       </inheritance>
>
>       <field name="topicExcluded" null-value="exception">
>
>         <column name="IS_TOPIC_EXCLUDED" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>       <field name="contentOverride" >  <!-- N-1 (ref) -->
>
>         <column name="CONTENT_ID" target="CONTENT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ShareLinkImpl.contentOverride"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentSharePoint"/>
>
>
>
>     <class name="DocumentSharePointImpl" identity-type="application"
> persistence-capable- 
> superclass="com.peacetech.dts.jdo.DocumentItemImpl">
>
>       <implements name="com.peacetech.dts.DocumentSharePoint"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="420"/>
>
>       </inheritance>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentItem"/>
>
>
>
>     <class name="DocumentItemImpl" identity-type="application"
> persistence-capable- 
> superclass="com.peacetech.dts.jdo.DocumentNodeImpl">
>
>       <implements name="com.peacetech.dts.DocumentItem"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="410"/>
>
>       </inheritance>
>
>       <field name="referenceNumber">
>
>         <column name="REFERENCE_NUMBER" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="16" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.SharePoint"/>
>
>
>
>     <class name="SharePointImpl" identity-type="application"
> persistence-capable-superclass="com.peacetech.dts.jdo.ShareNodeImpl">
>
>       <implements name="com.peacetech.dts.SharePoint"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="170"/>
>
>       </inheritance>
>
>       <field name="embedded" null-value="exception">
>
>         <column name="IS_EMBEDDED_SHARE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.ComponentHolder"/>
>
>
>
>     <class name="ComponentHolderImpl" identity-type="application"
> persistence-capable-superclass="com.peacetech.dts.jdo.ContainerImpl">
>
>       <implements name="com.peacetech.dts.ComponentHolder"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="310"/>
>
>       </inheritance>
>
>       <field name="versions" table="COMPONENT" mapped-by="container">
> <!-- 1-N -->
>
>         <collection element- 
> type="com.peacetech.dts.jdo.ComponentImpl"/>
>
>         <order column="CONTAINER_SORT_ORDER"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ComponentHolderImpl.versions"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentTopic"/>
>
>
>
>     <class name="DocumentTopicImpl" identity-type="application"
> persistence-capable- 
> superclass="com.peacetech.dts.jdo.DocumentItemImpl">
>
>       <implements name="com.peacetech.dts.DocumentTopic"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="430"/>
>
>       </inheritance>
>
>       <field name="group" null-value="exception">
>
>         <column name="IS_GROUP" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="selectedByUser">
>
>         <column name="IS_SELECTED_BY_USER" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>       <field name="selectedByRule" null-value="exception">
>
>         <column name="IS_SELECTED_BY_RULE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>       <field name="originalContent" >  <!-- N-1 (ref) -->
>
>         <column name="ORIGINAL_CONTENT" target="CONTENT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentTopicImpl.originalContent"/>
>
>       </field>
>
>       <field name="content"  null-value="exception">  <!-- N-1  
> (ref) -->
>
>         <column name="CONTENT_ID" target="CONTENT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentTopicImpl.content"/>
>
>       </field>
>
>       <field name="fields" table="DOCUMENT_FIELD" mapped-by="topic">
> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.DocumentFieldImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentTopicImpl.fields"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.TemplateContent"/>
>
>
>
>     <class name="TemplateContentImpl" identity-type="application"
> persistence-capable-superclass="com.peacetech.dts.jdo.ContentImpl">
>
>       <implements name="com.peacetech.dts.TemplateContent"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="210"/>
>
>       </inheritance>
>
>       <field name="owner"  null-value="exception">  <!-- N-1 (ref) -->
>
>         <column name="OWNER" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateContentImpl.owner"/>
>
>       </field>
>
>       <field name="topics" table="TEMPLATE_NODE" mapped-by="content">
> <!-- 1-N -->
>
>         <collection element-type="com.peacetech.dts.jdo.TopicImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateContentImpl.topics"/>
>
>       </field>
>
>       <field name="shares" table="TEMPLATE_NODE"
> mapped-by="contentOverride"> <!-- 1-N -->
>
>         <collection element- 
> type="com.peacetech.dts.jdo.ShareLinkImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateContentImpl.shares"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentFieldSingleValue"/>
>
>
>
>     <class name="DocumentFieldSingleValueImpl"
> identity-type="application"
> persistence-capable- 
> superclass="com.peacetech.dts.jdo.DocumentFieldImpl"
>>
>
>       <implements name="com.peacetech.dts.DocumentFieldSingleValue"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="510"/>
>
>       </inheritance>
>
>       <field name="value">
>
>         <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="1024" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Topic"/>
>
>
>
>     <class name="TopicImpl" identity-type="application"
> persistence-capable- 
> superclass="com.peacetech.dts.jdo.ComponentNodeImpl"
>>
>
>       <implements name="com.peacetech.dts.Topic"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="140"/>
>
>       </inheritance>
>
>       <field name="group" null-value="exception">
>
>         <column name="IS_GROUP" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="content"  null-value="exception">  <!-- N-1  
> (ref) -->
>
>         <column name="CONTENT_ID" target="CONTENT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TopicImpl.content"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Folder"/>
>
>
>
>     <class name="FolderImpl" identity-type="application"
> persistence-capable-superclass="com.peacetech.dts.jdo.ContainerImpl">
>
>       <implements name="com.peacetech.dts.Folder"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="320"/>
>
>       </inheritance>
>
>     </class>
>
>    </package>
>
> </jdo>
>
>
>
> -----Original Message-----
> From: Marc Prud'hommeaux [mailto:mprudhomapache@gmail.com] On  
> Behalf Of
> Marc Prud'hommeaux
> Sent: Tuesday, October 17, 2006 4:34 PM
> To: open-jpa-dev@incubator.apache.org
> Subject: Re: Why would Kodo refuse to batch inserts in certain tables?
> Big performance drop migrating to Kodo 4.1
>
>
>
> Alex-
>
>
>
> No attachment came through.
>
>
>
> Can you just paste the SQL log into a mail?
>
>
>
>
>
> On Oct 16, 2006, at 6:04 PM, Roytman, Alex wrote:
>
>
>
>> Marc,
>
>>
>
>> Attached is JDBC trace and my mapping file.
>
>>
>
>> You can see how everything but DOCUMENT_NODE is batched.
>
>>
>
>> DOCUMENT_NODE is a super-class table. It has several sub-classes
>
>> all but
>
>> one mapped on the same table. The one mapped vertically uses DOCUMENT
>
>> table. DOCUMENT_NODE have several bi- and uni-directional recursive
>
>> associations
>
>>
>
>> The rest of the classes are related to DOCUMENT_NODE via mapped-by
>
>>
>
>> Alex
>
>>
>
>>
>
>> -----Original Message-----
>
>> From: Marc Prud'hommeaux [mailto:mprudhomapache@gmail.com] On
>
>> Behalf Of
>
>> Marc Prud'hommeaux
>
>> Sent: Monday, October 16, 2006 7:30 PM
>
>> To: open-jpa-dev@incubator.apache.org
>
>> Subject: Re: Why would Kodo refuse to batch inserts in certain  
>> tables?
>
>> Big performance drop migrating to Kodo 4.1
>
>>
>
>> Alex-
>
>>
>
>> So you are saying that batching is working OK in general, just not
>
>> for a particular class? And that this particular class was batching
>
>> fine with previous versions? That is odd, although there are some
>
>> cases where we might refuse to batch a particular class (because of a
>
>> driver bug with batching certain column types, etc).
>
>>
>
>> As a shot in the dark, we do work around a bug in the Oracle JDBC
>
>> driver's failure to batch date/time effectively.
>
>>
>
>> Can you post the SQL log that shows the series of SQL statements that
>
>> should have been batched, but weren't? That might help shed light
>
>> on it.
>
>>
>
>> Also, database and JDBC driver type/version would be useful.
>
>>
>
>>
>
>>
>
>> On Oct 15, 2006, at 7:30 PM, Roytman, Alex wrote:
>
>>
>
>>> Hello,
>
>>>
>
>>>
>
>>>
>
>>> While migrating to Kodo 4.1 I noticed significant drop in insert
>
>>> performance. I trace it down to some strange batching behavior.  
>>> While
>
>>> most of the PC were committed with batched inserts one particular
>
>>> class
>
>>> refused to batch and would insert row by row resulting in 10 times
>
>>> performance drop.
>
>>>
>
>>>
>
>>>
>
>>> There is nothing special about the class. Its hierarchy is mapped on
>
>>> base its table except for one of the lowest members which is mapped
>
>>> vertically.
>
>>>
>
>>>
>
>>>
>
>>>
>
>>>
>
>>> Thank you very much
>
>>>
>
>>>
>
>>>
>
>>> Alex Roytman
>
>>>
>
>>> Peace Technology, Inc.
>
>>>
>
>>> 301-206-9696x103
>
>>>
>
>>>
>
>>>
>
>>
>
>
>


Mime
View raw message