@Override public void delete(String entityName, Object entity) { checkOpen(); EntityTypeDescriptor descriptor = getEntityDescriptor( entityName, entity ); Object id = descriptor.getIdentifier( entity, this ); Object version = descriptor.getVersion( entity ); descriptor.delete( id, version, entity, this ); }
@Override public Object insert(String entityName, Object entity) { checkOpen(); EntityTypeDescriptor descriptor = getEntityDescriptor( entityName, entity ); Object id = descriptor.getIdentifierDescriptor().getIdentifierValueGenerator().generate( this, entity ); Object[] state = descriptor.getPropertyValues( entity ); final VersionDescriptor versionDescriptor = descriptor.getHierarchy().getVersionDescriptor(); if ( versionDescriptor != null ) { boolean substitute = Versioning.seedVersion( state, versionDescriptor, this ); if ( substitute ) { descriptor.setPropertyValues( entity, state ); } } if ( id == IdentifierGeneratorHelper.POST_INSERT_INDICATOR ) { id = descriptor.insert( state, entity, this ); } else { descriptor.insert( id, state, entity, this ); } descriptor.setIdentifier( entity, id, this ); return id; }
@Override public void update(String entityName, Object entity) { checkOpen(); EntityTypeDescriptor entityDescriptor = getEntityDescriptor( entityName, entity ); Object id = entityDescriptor.getHierarchy().getIdentifierDescriptor().extractIdentifier( entity, this ); Object[] state = entityDescriptor.getPropertyValues( entity ); Object oldVersion; final VersionDescriptor<Object, Object> versionDescriptor = entityDescriptor.getHierarchy().getVersionDescriptor(); if ( versionDescriptor != null ) { oldVersion = entityDescriptor.getVersion( entity ); final VersionSupport versionSupport = versionDescriptor.getVersionSupport(); Object newVersion = Versioning.increment( oldVersion, versionSupport, this ); Versioning.setVersion( state, newVersion, entityDescriptor ); entityDescriptor.setPropertyValues( entity, state ); } else { oldVersion = null; } entityDescriptor.update( id, state, null, false, null, oldVersion, entity, null, this ); }
@Override public void refresh(String entityName, Object entity, LockMode lockMode) { final EntityTypeDescriptor entityDescriptor = this.getEntityDescriptor( entityName, entity ); final Object id = entityDescriptor.getIdentifier( entity, this ); if ( LOG.isTraceEnabled() ) {