[JBoss-dev] CVS update: jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc JDBCLoadEntityCommand.java JDBCStoreEntityCommand.java JDBCStoreManager.java JDBCUtil.java ReadAheadCache.java SQLUtil.java
User: dsundstrom Date: 02/02/26 16:07:59 Modified:src/main/org/jboss/ejb/plugins/cmp/jdbc JDBCLoadEntityCommand.java JDBCStoreEntityCommand.java JDBCStoreManager.java JDBCUtil.java ReadAheadCache.java SQLUtil.java Log: Moved extraneous log messages to trace level. Wrapped log messages with isEnabled checks. Revision ChangesPath 1.17 +7 -3 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadEntityCommand.java Index: JDBCLoadEntityCommand.java === RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadEntityCommand.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- JDBCLoadEntityCommand.java16 Feb 2002 10:37:54 - 1.16 +++ JDBCLoadEntityCommand.java27 Feb 2002 00:07:58 - 1.17 @@ -40,7 +40,7 @@ * @author a href=mailto:[EMAIL PROTECTED];Justin Forder/a * @author a href=mailto:[EMAIL PROTECTED];Dirk Zimmermann/a * @author a href=mailto:[EMAIL PROTECTED];danch (Dan Christopherson)/a - * @version $Revision: 1.16 $ + * @version $Revision: 1.17 $ */ public class JDBCLoadEntityCommand { private final JDBCStoreManager manager; @@ -98,7 +98,9 @@ con = entity.getDataSource().getConnection(); // create the statement - log.debug(Executing SQL: + sql); + if(log.isDebugEnabled()) { +log.debug(Executing SQL: + sql); + } ps = con.prepareStatement(sql); // set the parameters @@ -240,7 +242,9 @@ // get the load fields ArrayList loadFields = new ArrayList(entity.getFields().size()); if(requiredField == null) { - log.debug(Default eager-load for entity); + if(log.isTraceEnabled()) { +log.trace(Default eager-load for entity); + } loadFields.addAll(entity.getEagerLoadFields()); } else { loadFields.add(requiredField); 1.12 +11 -5 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStoreEntityCommand.java Index: JDBCStoreEntityCommand.java === RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStoreEntityCommand.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- JDBCStoreEntityCommand.java 15 Jan 2002 22:27:34 - 1.11 +++ JDBCStoreEntityCommand.java 27 Feb 2002 00:07:58 - 1.12 @@ -29,7 +29,7 @@ * @author a href=mailto:[EMAIL PROTECTED];Joe Shevland/a * @author a href=mailto:[EMAIL PROTECTED];Justin Forder/a * @author a href=mailto:[EMAIL PROTECTED];Sebastien Alborini/a - * @version $Revision: 1.11 $ + * @version $Revision: 1.12 $ */ public class JDBCStoreEntityCommand { private JDBCStoreManager manager; @@ -51,8 +51,10 @@ List dirtyFields = entity.getDirtyFields(ctx); if(dirtyFields.isEmpty()) { - log.debug(Store command NOT executed. Entity is not dirty: pk= + - ctx.getId()); + if(log.isTraceEnabled()) { +log.trace(Store command NOT executed. Entity is not dirty: pk= + + ctx.getId()); + } return; } @@ -71,7 +73,9 @@ con = entity.getDataSource().getConnection(); // create the statement - log.debug(Executing SQL: + sql); + if(log.isDebugEnabled()) { +log.debug(Executing SQL: + sql); + } ps = con.prepareStatement(sql.toString()); // set the parameters @@ -99,7 +103,9 @@ affected row: rowsAffected= + rowsAffected + id= + ctx.getId()); } - log.debug(Create: Rows affected = + rowsAffected); + if(log.isDebugEnabled()) { + log.debug(Create: Rows affected = + rowsAffected); + } // Mark the inserted fields as clean. for(Iterator iter = dirtyFields.iterator(); iter.hasNext(); ) { 1.28 +13 -22 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStoreManager.java Index: JDBCStoreManager.java === RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStoreManager.java,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- JDBCStoreManager.java 16 Feb 2002 10:37:54 - 1.27 +++ JDBCStoreManager.java 27 Feb 2002 00:07:58 - 1.28 @@ -31,6 +31,7 @@ import org.jboss.ejb.EntityPersistenceStore; import org.jboss.ejb.EntityEnterpriseContext; import
[JBoss-dev] CVS update: jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc JDBCLoadEntityCommand.java
User: dsundstrom Date: 02/01/16 13:07:18 Modified:src/main/org/jboss/ejb/plugins/cmp/jdbc JDBCLoadEntityCommand.java Log: Fixed bug where read ahead strategy was ignored. Added support for lazy load groups. Revision ChangesPath 1.15 +23 -8 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadEntityCommand.java Index: JDBCLoadEntityCommand.java === RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadEntityCommand.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- JDBCLoadEntityCommand.java2002/01/15 22:33:08 1.14 +++ JDBCLoadEntityCommand.java2002/01/16 21:07:18 1.15 @@ -40,7 +40,7 @@ * @author a href=mailto:[EMAIL PROTECTED];Justin Forder/a * @author a href=mailto:[EMAIL PROTECTED];Dirk Zimmermann/a * @author a href=mailto:[EMAIL PROTECTED];danch (Dan Christopherson)/a - * @version $Revision: 1.14 $ + * @version $Revision: 1.15 $ */ public class JDBCLoadEntityCommand { private final JDBCStoreManager manager; @@ -237,22 +237,37 @@ JDBCCMPFieldBridge requiredField, EntityEnterpriseContext ctx) { - ArrayList fields = new ArrayList(entity.getEagerLoadFields()); - if(requiredField != null !fields.contains(requiredField)) { - fields.add(requiredField); + // get the load fields + ArrayList loadFields = new ArrayList(entity.getFields().size()); + if(requiredField == null) { + log.debug(Default eager-load for entity); + loadFields.addAll(entity.getEagerLoadFields()); + } else { + loadFields.add(requiredField); + for(Iterator groups = entity.getLazyLoadGroups(); groups.hasNext();) { +List group = (List)groups.next(); +if(group.contains(requiredField)) { + for(Iterator fields = group.iterator(); fields.hasNext();) { + JDBCFieldBridge field = (JDBCFieldBridge)fields.next(); + if(!loadFields.contains(field)) { + loadFields.add(field); + } + } +} + } } // remove any field that is a member of the primary key // or has not timed out or is already loaded - for(Iterator iter=fields.iterator(); iter.hasNext();) { - JDBCFieldBridge field = (JDBCFieldBridge)iter.next(); + for(Iterator fields = loadFields.iterator(); fields.hasNext();) { + JDBCFieldBridge field = (JDBCFieldBridge)fields.next(); if(field.isPrimaryKeyMember() || !field.isReadTimedOut(ctx) || field.isLoaded(ctx)) { -iter.remove(); +fields.remove(); } } - return fields; + return loadFields; } } ___ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development
[JBoss-dev] CVS update: jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc JDBCLoadEntityCommand.java
User: dsundstrom Date: 02/01/15 14:33:08 Modified:src/main/org/jboss/ejb/plugins/cmp/jdbc JDBCLoadEntityCommand.java Log: Added support for merged CMR field and CMP field interface. Added support for new ReadAheadCache. Merged functions from JDBCLoadFieldCommand and JDBCReadAheadCommand. Revision ChangesPath 1.14 +164 -54 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadEntityCommand.java Index: JDBCLoadEntityCommand.java === RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadEntityCommand.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- JDBCLoadEntityCommand.java2002/01/05 12:08:51 1.13 +++ JDBCLoadEntityCommand.java2002/01/15 22:33:08 1.14 @@ -11,15 +11,20 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; import javax.ejb.EJBException; import javax.ejb.NoSuchEntityException; import org.jboss.ejb.EntityEnterpriseContext; +import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCFieldBridge; import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMPFieldBridge; import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge; import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCFunctionMappingMetaData; import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCTypeMappingMetaData; import org.jboss.logging.Logger; +import org.jboss.util.FinderResults; /** * JDBCLoadEntityCommand loads the data for an instance from the table. @@ -28,18 +33,19 @@ * helpful for entitys with lots of data. * * @author a href=mailto:[EMAIL PROTECTED];Dain Sundstrom/a + * @author a href=mailto:[EMAIL PROTECTED];Oleg Nitz/a * @author a href=mailto:[EMAIL PROTECTED];Rickard Öberg/a * @author a href=mailto:[EMAIL PROTECTED];Marc Fleury/a * @author a href=mailto:[EMAIL PROTECTED];Joe Shevland/a * @author a href=mailto:[EMAIL PROTECTED];Justin Forder/a * @author a href=mailto:[EMAIL PROTECTED];Dirk Zimmermann/a * @author a href=mailto:[EMAIL PROTECTED];danch (Dan Christopherson)/a - * @version $Revision: 1.13 $ + * @version $Revision: 1.14 $ */ public class JDBCLoadEntityCommand { - private JDBCStoreManager manager; - private JDBCEntityBridge entity; - private Logger log; + private final JDBCStoreManager manager; + private final JDBCEntityBridge entity; + private final Logger log; public JDBCLoadEntityCommand(JDBCStoreManager manager) { this.manager = manager; @@ -53,42 +59,37 @@ } public void execute(EntityEnterpriseContext ctx) { - // load the instance primary key fields + execute(null, ctx); + } + + public void execute( + JDBCCMPFieldBridge requiredField, + EntityEnterpriseContext ctx) { + + // load the instance primary key fields into the context entity.injectPrimaryKeyIntoInstance(ctx, ctx.getId()); + + // get the read ahead cache + ReadAheadCache readAheadCache = manager.getReadAheadCache(); + + // load any preloaded fields into the context + readAheadCache.load(ctx); // determine the fields to load - JDBCCMPFieldBridge[] loadFields = getLoadFields(ctx); + List loadFields = getLoadFields(requiredField, ctx); // if no there are not load fields return - if(loadFields.length == 0) { + if(loadFields.size() == 0) { return; } - // generate the sql - StringBuffer sql = new StringBuffer(); - String columnNamesClause = SQLUtil.getColumnNamesClause(loadFields); - String tableName = entity.getTableName(); - String whereClause = SQLUtil.getWhereClause(entity.getJDBCPrimaryKeyFields()); + // get the finder results associated with this context, if it exists + ReadAheadCache.EntityReadAheadInfo info = + readAheadCache.getEntityReadAheadInfo(ctx.getId()); + List loadKeys = info.getLoadKeys(); - if (entity.getMetaData().hasRowLocking()) - { - JDBCFunctionMappingMetaData rowLocking = manager.getMetaData().getTypeMapping().getRowLockingTemplate(); - if (rowLocking == null) - { -throw new IllegalStateException(row-locking is not allowed for this type of datastore); - } - else - { -String[] args = new String[] {columnNamesClause, tableName, whereClause}; -sql.append(rowLocking.getFunctionSql(args)); - } - } - else - { - sql.append(SELECT ).append(columnNamesClause); - sql.append( FROM ).append(tableName); - sql.append(