📄 scheduledupdate.java
字号:
//$Id: ScheduledUpdate.java,v 1.6.2.12 2003/12/16 12:13:47 oneovthafew Exp $package net.sf.hibernate.impl;import java.io.Serializable;import net.sf.hibernate.HibernateException;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() ) { if ( persister.isCacheInvalidationRequired() ) { persister.getCache().evict(id); } else { //TODO: inefficient if that cache is just going to ignore the updated state! cacheEntry = new CacheEntry( instance, persister, getSession() ); persister.getCache().update(id, cacheEntry); } } } public void afterTransactionCompletion(boolean success) throws CacheException { ClassPersister persister = getPersister(); if ( persister.hasCache() ) { if ( success && !persister.isCacheInvalidationRequired() ) { persister.getCache().afterUpdate( getId(), cacheEntry, lock ); } else { persister.getCache().release( getId(), lock ); } } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -