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);
|