⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cacheentry.java

📁 介绍了hibernate的入门有一些基本常用的事例
💻 JAVA
字号:
//$Id: CacheEntry.java,v 1.4 2005/03/16 04:45:19 oneovthafew Exp $package org.hibernate.cache.entry;import java.io.Serializable;import org.hibernate.AssertionFailure;import org.hibernate.HibernateException;import org.hibernate.Interceptor;import org.hibernate.engine.SessionImplementor;import org.hibernate.event.PreLoadEvent;import org.hibernate.persister.entity.EntityPersister;import org.hibernate.type.TypeFactory;import org.hibernate.util.ArrayHelper;/** * A cached instance of a persistent class * * @author Gavin King */public final class CacheEntry implements Serializable {	private final Serializable[] disassembledState;	private final String subclass;	private final boolean lazyPropertiesAreUnfetched;		public String getSubclass() {		return subclass;	}		public boolean areLazyPropertiesUnfetched() {		return lazyPropertiesAreUnfetched;	}		public CacheEntry(Object[] state, EntityPersister persister, boolean unfetched, SessionImplementor session, Object owner) 	throws HibernateException {		//disassembled state gets put in a new array (we write to cache by value!)		this.disassembledState = TypeFactory.disassemble( state, persister.getPropertyTypes(), session, owner );		subclass = persister.getEntityName();		lazyPropertiesAreUnfetched = unfetched;	}	CacheEntry(Serializable[] state, String subclass, boolean unfetched) {		this.disassembledState = state;		this.subclass = subclass;		this.lazyPropertiesAreUnfetched = unfetched;	}	public Object[] assemble(			final Object instance, 			final Serializable id, 			final EntityPersister persister, 			final Interceptor interceptor, 			final SessionImplementor session) 	throws HibernateException {		if ( !persister.getEntityName().equals(subclass) ) {			throw new AssertionFailure("Tried to assemble a different subclass instance");		}		return assemble(disassembledState, instance, id, persister, interceptor, session);	}	private static Object[] assemble(			final Serializable[] values, 			final Object result, 			final Serializable id, 			final EntityPersister persister, 			final Interceptor interceptor, 			final SessionImplementor session) 	throws HibernateException {					//assembled state gets put in a new array (we read from cache by value!)		Object[] assembledProps = TypeFactory.assemble( values, persister.getPropertyTypes(), session, result );		//persister.setIdentifier(result, id); //before calling interceptor, for consistency with normal load		//TODO: reuse the PreLoadEvent		PreLoadEvent preLoadEvent = new PreLoadEvent(session).setEntity(result)				.setState(assembledProps).setId(id).setPersister(persister);		session.getListeners().getPreLoadEventListener().onPreLoad(preLoadEvent);		persister.setPropertyValues( result, assembledProps, session.getEntityMode() );		return assembledProps;	}    public Serializable[] getDisassembledState() {	    // todo: this was added to support initializing an entity's EntityEntry snapshot during reattach;	    // this should be refactored to instead expose a method to assemble a EntityEntry based on this	    // state for return.	    return disassembledState;    }	public String toString() {		return "CacheEntry(" + subclass + ')' + ArrayHelper.toString(disassembledState);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -