Author: arminw
Date: Sun Jan  8 13:52:21 2006
New Revision: 367103

URL: http://svn.apache.org/viewcvs?rev=367103&view=rev
Log:
add section about new PersistentFieldImplementation, update doc

Modified:
    
db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/advanced-technique.xml
    db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/OJB.properties

Modified: 
db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/advanced-technique.xml
URL: 
http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/advanced-technique.xml?rev=367103&r1=367102&r2=367103&view=diff
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/advanced-technique.xml
 (original)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/advanced-technique.xml
 Sun Jan  8 13:52:21 2006
@@ -1009,16 +1009,15 @@
                     method) declared in the interface.</li>
                 <li>Since we're using bean properties, the appropriate
                     
<code>org.apache.ojb.broker.metadata.fieldaccess.PersistentField</code>
-                    implementation must be used (see <a 
href="#persistent-field">below</a>).
-                    This class is used by OJB to access the fields when 
storing/loading objects. Per default,
-                    OJB uses a direct access implementation
-                    
(<code>org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectImpl</code>)
 which
-                    requires actual fields to be present.<br/>
+                    implementation must be used. This class is used by OJB to 
access the
+                    fields when storing/loading objects. A detailed  
description can be
+                    found in the <a 
href="#persistent-field"><em>PersistentField</em> section</a>.
+                    <br/>
                     In our case, we need an implementation that rather uses 
the accessor methods. Since the
-                    <code>PersistentField</code> setting is (currently) 
global, you have to check whether
-                    there are accessors defined for every field in the 
metadata. If yes, then you can use the
-                    
<code>org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldIntrospectorImpl</code>,
-                    otherwise you'll have to resort to the
+                    <code>PersistentField</code> setting is (currently OJB 
1.0.x versions) global, you have
+                    to check whether there are accessors defined for every 
field in the metadata.
+                    If yes, then you can use a
+                    <em>JavaBean</em> based <code>FieldDescriptor</code>, 
otherwise you'll have to resort to the
                     
<code>org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldAutoProxyImpl</code>,
 which
                     determines for every field what type of field it is and 
then uses the appropriate
                     strategy.</li>
@@ -1215,12 +1214,16 @@
 # By default the best performing attribute/refection based implementation
 # is selected (PersistentFieldDirectAccessImpl).
 #
-# - PersistentFieldDirectAccessImpl
+# - PersistentFieldDirectImpl
 #   is a high-speed version of the access strategies.
 #   It does not cooperate with an AccessController,
 #   but accesses the fields directly. Persistent
 #   attributes don't need getters and setters
 #   and don't have to be declared public or protected
+# - PersistentFieldCGLibImpl
+#   A very fast beans compliant (getter/setter access based) PersistentField
+#   implementation (it's three times faster than the direct field access via 
reflection).
+#   Needs public getter/setter for all declared fields.
 # - PersistentFieldPrivilegedImpl
 #   Same as above, but does cooperate with AccessController and do not
 #   suppress the java language access check (but is slow compared with direct 
access).
@@ -1233,9 +1236,12 @@
 #   org.apache.commons.beanutils.DynaBean.
 # - PersistentFieldAutoProxyImpl
 #   for each field determines upon first access how to access this particular 
field
-#   (directly, as a bean, as a dyna bean) and then uses that strategy
+#   (cglib based, directly, as a bean, as a dyna bean) and then uses that 
strategy.
+#   The order of field access testing goes from the fastest to slowest, so you 
will always
+#   get the best performance.
 #
-#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectImpl
+PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectImpl
+#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldCGLibImpl
 
#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldPrivilegedImpl
 
#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldIntrospectorImpl
 
#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDynaBeanImpl
@@ -1243,11 +1249,24 @@
 #(DynaBean implementation does not support nested fields)
 #]]></source>
             <p>
-                E.g. if the PersistentFieldDirectImpl is used there must be an 
attribute in the
-                persistent class with this name, if the 
PersistentFieldIntrospectorImpl is used there must
-                be a JavaBeans compliant property of this name.
+                E.g. if the <code>PersistentFieldDirectImpl</code> is used 
there must be an attribute in the
+                persistent class with this name, if the 
<code>PersistentFieldCGLibImpl</code> is used there must
+                be a <em>JavaBeans</em> compliant property of this name.
+                <br/>
                 More info about the individual implementation can be found in 
<a href="ext:javadoc">javadoc</a>.
             </p>
+            <p>
+                Per default, OJB uses a direct access implementation 
(<code>PersistentFieldDirectImpl</code>)
+                which requires actual fields to be present.
+            </p>
+            <p>
+                If you have bean compliant and non-compilant persistence 
capable classes the
+                <code>PersistentFieldAutoProxyImpl</code> will be a good 
choice. In this case OJB
+                will always use the best performing strategy.
+            </p>
+            <p>
+                For best performance <code>PersistentFieldCGLibImpl</code> is 
recommended.
+            </p>
         </section>
 
 
@@ -1264,9 +1283,9 @@
                 <br/>
                 Main class used for provide anonymous keys is
                 
<code>org.apache.ojb.broker.metadata.fieldaccess.AnonymousPersistentField</code>.
 Current implementation
-                use an object identity based weak HashMap. The persistent 
object identity is used as key for the
-                anonymous key value. The (Anonymous)PersistentField instance 
is associated with the <em>FieldDescriptor</em>
-                declared in the repository.
+                use an object identity based weak <code>HashMap</code>. The 
persistent object identity is used as
+                key for the anonymous key value. The 
(Anonymous)PersistentField instance is associated with the
+                <a 
href="site:repository/field-descriptor"><code>FieldDescriptor</code></a> 
declared in the repository.
             </p>
             <p>
                 This means that all anonymous key information will be lost 
when the object identity change, e.g. the

Modified: db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/OJB.properties
URL: 
http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/OJB.properties?rev=367103&r1=367102&r2=367103&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/OJB.properties 
(original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/OJB.properties Sun 
Jan  8 13:52:21 2006
@@ -411,12 +411,16 @@
 # By default the best performing attribute/refection based implementation
 # is selected (PersistentFieldDirectAccessImpl).
 #
-# - PersistentFieldDirectAccessImpl
+# - PersistentFieldDirectImpl
 #   is a high-speed version of the access strategies.
 #   It does not cooperate with an AccessController,
 #   but accesses the fields directly. Persistent
 #   attributes don't need getters and setters
 #   and don't have to be declared public or protected
+# - PersistentFieldCGLibImpl
+#   A very fast beans compliant (getter/setter access based) PersistentField
+#   implementation (it's three times faster than the direct field access via 
reflection).
+#   Needs public getter/setter for all declared fields.
 # - PersistentFieldPrivilegedImpl
 #   Same as above, but does cooperate with AccessController and do not
 #   suppress the java language access check (but is slow compared with direct 
access).
@@ -429,9 +433,12 @@
 #   org.apache.commons.beanutils.DynaBean.
 # - PersistentFieldAutoProxyImpl
 #   for each field determines upon first access how to access this particular 
field
-#   (directly, as a bean, as a dyna bean) and then uses that strategy
+#   (cglib based, directly, as a bean, as a dyna bean) and then uses that 
strategy.
+#   The order of field access testing goes from the fastest to slowest, so you 
will always
+#   get the best performance.
 #
 
PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectImpl
+#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldCGLibImpl
 
#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldPrivilegedImpl
 
#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldIntrospectorImpl
 
#PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDynaBeanImpl



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to