📄 scheduledupdate.java
字号:
//$Id: ScheduledUpdate.java,v 1.6.2.11 2003/11/05 09:01:30 oneovthafew Exp $package net.sf.hibernate.impl;import java.io.Serializable;import net.sf.hibernate.HibernateException;import net.sf.hibernate.cache.CacheConcurrencyStrategy;import net.sf.hibernate.cache.CacheException;import net.sf.hibernate.cache.CacheConcurrencyStrategy.SoftLock;import net.sf.hibernate.engine.SessionImplementor;import net.sf.hibernate.persister.ClassPersister;final class ScheduledUpdate extends ScheduledEntityAction implements SessionImpl.Executable { private final Object[] fields; private final Object[] oldFields; private final Object lastVersion; private final Object nextVersion; private final int[] dirtyFields; private final Object[] updatedState; private CacheEntry cacheEntry; private SoftLock lock; public ScheduledUpdate( Serializable id, Object[] fields, int[] dirtyProperties, Object[] oldFields, Object lastVersion, Object nextVersion, Object instance, Object[] updatedState, ClassPersister persister, SessionImplementor session ) throws HibernateException { super(session, id, instance, persister); this.fields = fields; this.oldFields = oldFields; this.lastVersion = lastVersion; this.nextVersion = nextVersion; this.dirtyFields = dirtyProperties; this.updatedState = updatedState; } public void execute() throws HibernateException { Serializable id = getId(); ClassPersister persister = getPersister(); SessionImplementor session = getSession(); Object instance = getInstance(); if ( persister.hasCache() ) lock = persister.getCache().lock(id); persister.update(id, fields, dirtyFields, oldFields, lastVersion, instance, session); session.postUpdate(instance, updatedState, nextVersion); if ( persister.hasCache() ) { //TODO: inefficient if that cache is just going to ignore the updated state! cacheEntry = new CacheEntry( getInstance(), persister, getSession() ); persister.getCache().update( getId(), cacheEntry ); } } public void afterTransactionCompletion(boolean success) throws CacheException { ClassPersister p = getPersister(); if ( p.hasCache() ) { CacheConcurrencyStrategy cache = p.getCache(); if (success) { cache.afterUpdate( getId(), cacheEntry, lock ); } else { cache.release( getId(), lock ); } } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -