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

📄 abstracttuplizer.java

📁 介绍了hibernate的入门有一些基本常用的事例
💻 JAVA
字号:
// $Id: AbstractTuplizer.java,v 1.12 2005/02/21 02:08:45 oneovthafew Exp $package org.hibernate.tuple;import java.io.Serializable;import java.util.Iterator;import org.hibernate.EntityMode;import org.hibernate.HibernateException;import org.hibernate.engine.SessionFactoryImplementor;import org.hibernate.engine.SessionImplementor;import org.hibernate.id.Assigned;import org.hibernate.intercept.LazyPropertyInitializer;import org.hibernate.mapping.PersistentClass;import org.hibernate.mapping.Property;import org.hibernate.property.Getter;import org.hibernate.property.Setter;import org.hibernate.proxy.ProxyFactory;import org.hibernate.type.AbstractComponentType;/** * Support base class for EntityTuplizer implementations. * * @author Steve Ebersole */public abstract class AbstractTuplizer implements EntityTuplizer {	//TODO: currently keeps Getters and Setters (instead of PropertyAccessors) because 	//      of the way getGetter() and getSetter() are implemented currently; yuck!	private final EntityMetamodel entityMetamodel;	private final Getter idGetter;	private final Setter idSetter;	protected final Getter[] getters;	protected final Setter[] setters;	protected final int propertySpan;	protected final boolean hasCustomAccessors;	private final Instantiator instantiator;	private final ProxyFactory proxyFactory;	protected abstract EntityMode getEntityMode();	protected abstract Getter buildPropertyGetter(Property mappedProperty, PersistentClass mappedEntity);	protected abstract Setter buildPropertySetter(Property mappedProperty, PersistentClass mappedEntity);	protected abstract Instantiator buildInstantiator(PersistentClass mappingInfo);	protected abstract ProxyFactory buildProxyFactory(PersistentClass mappingInfo, Getter idGetter, Setter idSetter);		public AbstractTuplizer(EntityMetamodel entityMetamodel, PersistentClass mappedEntity) {		this.entityMetamodel = entityMetamodel;		if ( !entityMetamodel.getIdentifierProperty().isVirtual() ) {			idGetter = buildPropertyGetter( mappedEntity.getIdentifierProperty(), mappedEntity );			idSetter = buildPropertySetter( mappedEntity.getIdentifierProperty(), mappedEntity );		}		else {			idGetter = null;			idSetter = null;		}		propertySpan = entityMetamodel.getPropertySpan();        getters = new Getter[propertySpan];		setters = new Setter[propertySpan];		Iterator iter = mappedEntity.getPropertyClosureIterator();		boolean foundCustomAccessor=false;		int i=0;		while ( iter.hasNext() ) {			//TODO: redesign how PropertyAccessors are acquired...			Property property = (Property) iter.next();			getters[i] = buildPropertyGetter(property, mappedEntity);			setters[i] = buildPropertySetter(property, mappedEntity);			if ( !property.isBasicPropertyAccessor() ) foundCustomAccessor = true;			i++;		}		hasCustomAccessors = foundCustomAccessor;        instantiator = buildInstantiator( mappedEntity );		if ( entityMetamodel.isLazy() ) {			proxyFactory = buildProxyFactory( mappedEntity, idGetter, idSetter );		}		else {			proxyFactory = null;		}	}	public String getEntityName() {		return entityMetamodel.getName();	}	public Serializable getIdentifier(Object entity) throws HibernateException {		final Object id;		if ( entityMetamodel.getIdentifierProperty().isEmbedded() ) {			id = entity;		}		else {			if ( idGetter == null ) {				throw new HibernateException( "The class has no identifier property: " + getEntityName() );			}			id = idGetter.get( entity );		}		try {			return ( Serializable ) id;		}		catch ( ClassCastException cce ) {			StringBuffer msg = new StringBuffer( "Identifier classes must be serializable. " );			if ( id != null ) {				msg.append( id.getClass().getName() + " is not serializable. " );			}			if ( cce.getMessage() != null ) {				msg.append( cce.getMessage() );			}			throw new ClassCastException( msg.toString() );		}	}	public void setIdentifier(Object entity, Serializable id) throws HibernateException {		if ( entityMetamodel.getIdentifierProperty().isEmbedded() ) {			if ( entity != id ) {				AbstractComponentType copier = (AbstractComponentType) entityMetamodel.getIdentifierProperty().getType();				copier.setPropertyValues( entity, copier.getPropertyValues( id, getEntityMode() ), getEntityMode() );			}		}		else if ( idSetter != null ) {			idSetter.set( entity, id, getFactory() );		}	}	public void resetIdentifier(Object entity, Serializable currentId, Object currentVersion) {		if ( entityMetamodel.getIdentifierProperty().getIdentifierGenerator() instanceof Assigned ) {			//return currentId;		}		else {			//reset the id			Serializable result = entityMetamodel.getIdentifierProperty().getUnsavedValue()					.getDefaultValue( currentId );			setIdentifier( entity, result );			//reset the version			VersionProperty versionProperty = entityMetamodel.getVersionProperty();			if ( entityMetamodel.isVersioned() ) {				setPropertyValue(				        entity,				        entityMetamodel.getVersionPropertyIndex(),						versionProperty.getUnsavedValue().getDefaultValue( currentVersion )				);			}			//return the id, so we can use it to reset the proxy id			//return result;		}	}	public Object getVersion(Object entity) throws HibernateException {		if ( !entityMetamodel.isVersioned() ) return null;		return getters[ entityMetamodel.getVersionPropertyIndex() ].get( entity );	}	protected boolean shouldGetAllProperties(Object entity) {		return !hasUninitializedLazyProperties( entity );	}	public Object[] getPropertyValues(Object entity) throws HibernateException {		boolean getAll = shouldGetAllProperties( entity );		final int span = entityMetamodel.getPropertySpan();		final Object[] result = new Object[span];		for ( int j = 0; j < span; j++ ) {			StandardProperty property = entityMetamodel.getProperties()[j];			if ( getAll || !property.isLazy() ) {				result[j] = getters[j].get( entity );			}			else {				result[j] = LazyPropertyInitializer.UNFETCHED_PROPERTY;			}		}		return result;	}	public Object[] getPropertyValuesToInsert(Object entity, SessionImplementor session) 	throws HibernateException {		final int span = entityMetamodel.getPropertySpan();		final Object[] result = new Object[span];		for ( int j = 0; j < span; j++ ) {			result[j] = getters[j].getForInsert( entity, session );		}		return result;	}	public Object getPropertyValue(Object entity, int i) throws HibernateException {		return getters[i].get( entity );	}	public Object getPropertyValue(Object entity, String propertyName) throws HibernateException {		return getPropertyValue( entity, entityMetamodel.getPropertyIndex( propertyName ) );	}	public void setPropertyValues(Object entity, Object[] values) throws HibernateException {		boolean setAll = !entityMetamodel.hasLazyProperties();		for ( int j = 0; j < entityMetamodel.getPropertySpan(); j++ ) {			if ( setAll || values[j] != LazyPropertyInitializer.UNFETCHED_PROPERTY ) {				setters[j].set( entity, values[j], getFactory() );			}		}	}	public void setPropertyValue(Object entity, int i, Object value) throws HibernateException {		setters[i].set( entity, value, getFactory() );	}	public void setPropertyValue(Object entity, String propertyName, Object value) throws HibernateException {		setters[ entityMetamodel.getPropertyIndex( propertyName ) ].set( entity, value, getFactory() );	}	public final Object instantiate(Serializable id) throws HibernateException {		Object result = instantiator.instantiate( id );		if ( id != null ) {			setIdentifier( result, id );		}		return result;	}	public final Object instantiate() throws HibernateException {		return instantiator.instantiate(null);	}	public void afterInitialize(Object entity, boolean lazyPropertiesAreUnfetched, SessionImplementor session) {}	public boolean hasUninitializedLazyProperties(Object entity) {		// the default is to simply not lazy fetch properties for now...		return false;	}	public final boolean isInstance(Object object) {        return instantiator.isInstance( object );	}	public boolean hasProxy() {		return entityMetamodel.isLazy();	}	public Object createProxy(Serializable id, SessionImplementor session) 	throws HibernateException {		return getProxyFactory().getProxy( id, session );	}	public boolean isLifecycleImplementor() {		return false;	}	public boolean isValidatableImplementor() {		return false;	}		protected final EntityMetamodel getEntityMetamodel() {		return entityMetamodel;	}	protected final SessionFactoryImplementor getFactory() {		return entityMetamodel.getSessionFactory();	}	protected final Instantiator getInstantiator() {		return instantiator;	}	protected final ProxyFactory getProxyFactory() {		return proxyFactory;	}		public String toString() {		return getClass().getName() + '(' + getEntityMetamodel().getName() + ')';	}}

⌨️ 快捷键说明

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