From: <one...@us...> - 2003-01-25 00:13:59
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister In directory sc8-pr-cvs1:/tmp/cvs-serv7859/sf/hibernate/persister Modified Files: AbstractEntityPersister.java EntityPersister.java Log Message: implemented dynamic-update for EntityPersister Index: AbstractEntityPersister.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister/AbstractEntityPersister.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** AbstractEntityPersister.java 24 Jan 2003 16:15:58 -0000 1.7 --- AbstractEntityPersister.java 25 Jan 2003 00:13:55 -0000 1.8 *************** *** 76,79 **** --- 76,80 ---- private transient final boolean useIdentityColumn; private transient final Class superclass; + private transient final boolean dynamicUpdate; private transient final String identitySelectString; *************** *** 462,465 **** --- 463,467 ---- mutable = model.isMutable(); + dynamicUpdate = model.useDynamicUpdate(); polymorphic = model.isPolymorphic(); *************** *** 696,699 **** --- 698,705 ---- public boolean[] getPropertyMutability() { return propertyMutability; + } + + protected boolean useDynamicUpdate() { + return dynamicUpdate; } Index: EntityPersister.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister/EntityPersister.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** EntityPersister.java 24 Jan 2003 16:15:59 -0000 1.10 --- EntityPersister.java 25 Jan 2003 00:13:55 -0000 1.11 *************** *** 553,560 **** */ public void update(Serializable id, Object[] fields, int[] dirtyFields, Object oldVersion, Object object, SessionImplementor session) throws SQLException, HibernateException { ! doUpdate(id, fields, getPropertyMutability(), oldVersion, object, sqlUpdate(), session); } ! protected void doUpdate(Serializable id, Object[] fields, boolean[] includeProperty, Object oldVersion, Object object, String sql, SessionImplementor session) throws SQLException, HibernateException { if ( log.isTraceEnabled() ) { log.trace("Updating entity: " + getClassName() + '#' + id); --- 553,573 ---- */ public void update(Serializable id, Object[] fields, int[] dirtyFields, Object oldVersion, Object object, SessionImplementor session) throws SQLException, HibernateException { ! if ( useDynamicUpdate() && dirtyFields!=null ) { ! boolean[] propsToUpdate = new boolean[hydrateSpan]; ! for ( int i=0; i<hydrateSpan; i++ ) { ! boolean dirty=false; ! for (int j=0; j<dirtyFields.length; j++) { ! if ( dirtyFields[j]==i ) dirty=true; ! } ! propsToUpdate[i] = ( dirty && getPropertyMutability()[i] ) || getVersionProperty()==i; ! } ! update(id, fields, propsToUpdate, oldVersion, object, generateUpdateString(propsToUpdate), session); ! } ! else { ! update(id, fields, getPropertyMutability(), oldVersion, object, sqlUpdate(), session); ! } } ! protected void update(Serializable id, Object[] fields, boolean[] includeProperty, Object oldVersion, Object object, String sql, SessionImplementor session) throws SQLException, HibernateException { if ( log.isTraceEnabled() ) { log.trace("Updating entity: " + getClassName() + '#' + id); |