亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pojoentitytuplizer.java

?? hibernate-3.1.3-all-src.zip 面向對象的訪問數據庫工具
?? JAVA
字號:
// $Id: PojoEntityTuplizer.java 8136 2005-09-09 15:19:45Z oneovthafew $
package org.hibernate.tuple;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import net.sf.cglib.beans.BulkBean;
import net.sf.cglib.reflect.FastClass;
import net.sf.cglib.transform.impl.InterceptFieldEnabled;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.EntityMode;
import org.hibernate.HibernateException;
import org.hibernate.MappingException;
import org.hibernate.PropertyAccessException;
import org.hibernate.cfg.Environment;
import org.hibernate.classic.Lifecycle;
import org.hibernate.classic.Validatable;
import org.hibernate.engine.SessionImplementor;
import org.hibernate.intercept.FieldInterceptor;
import org.hibernate.mapping.PersistentClass;
import org.hibernate.mapping.Property;
import org.hibernate.mapping.Subclass;
import org.hibernate.property.Getter;
import org.hibernate.property.Setter;
import org.hibernate.proxy.CGLIBProxyFactory;
import org.hibernate.proxy.HibernateProxy;
import org.hibernate.proxy.ProxyFactory;
import org.hibernate.type.AbstractComponentType;
import org.hibernate.util.ReflectHelper;

/**
 * POJO-based implementation of an EntityTuplizer.
 *
 * @author Steve Ebersole
 */
public class PojoEntityTuplizer extends AbstractEntityTuplizer {

	static final Log log = LogFactory.getLog( PojoEntityTuplizer.class );

	private final Class mappedClass;
	private final Class proxyInterface;
	private final boolean lifecycleImplementor;
	private final boolean validatableImplementor;
	private final Set lazyPropertyNames = new HashSet();
	private BulkBean optimizer;
	private FastClass fastClass;

	public PojoEntityTuplizer(EntityMetamodel entityMetamodel, PersistentClass mappedEntity) {
		super( entityMetamodel, mappedEntity );
		this.mappedClass = mappedEntity.getMappedClass();
		this.proxyInterface = mappedEntity.getProxyInterface();
		this.lifecycleImplementor = Lifecycle.class.isAssignableFrom( mappedClass );
		this.validatableImplementor = Validatable.class.isAssignableFrom( mappedClass );

		Iterator iter = mappedEntity.getPropertyClosureIterator();
		while ( iter.hasNext() ) {
			Property property = (Property) iter.next();
			if ( property.isLazy() ) {
				lazyPropertyNames.add( property.getName() );
			}
		}

		String[] getterNames = new String[propertySpan];
		String[] setterNames = new String[propertySpan];
		Class[] propTypes = new Class[propertySpan];
		for ( int i = 0; i < propertySpan; i++ ) {
			getterNames[i] = getters[i].getMethodName();
			setterNames[i] = setters[i].getMethodName();
			propTypes[i] = getters[i].getReturnType();
		}

		if ( hasCustomAccessors || !Environment.useReflectionOptimizer() ) {
			fastClass = null;
			optimizer = null;
		}
		else {
			fastClass = ReflectHelper.getFastClass( mappedClass );
			optimizer = ReflectHelper.getBulkBean( mappedClass, getterNames, setterNames, propTypes, fastClass );
			if (optimizer==null) fastClass = null;
		}
	
	}

	protected ProxyFactory buildProxyFactory(PersistentClass persistentClass, Getter idGetter, Setter idSetter) {
		// determine the id getter and setter methods from the proxy interface (if any)
        // determine all interfaces needed by the resulting proxy
		HashSet proxyInterfaces = new HashSet();
		proxyInterfaces.add( HibernateProxy.class );
		
		Class mappedClass = persistentClass.getMappedClass();
		Class proxyInterface = persistentClass.getProxyInterface();

		if ( proxyInterface!=null && !mappedClass.equals( proxyInterface ) ) {
			if ( !proxyInterface.isInterface() ) {
				throw new MappingException(
				        "proxy must be either an interface, or the class itself: " + 
				        getEntityName()
					);
			}
			proxyInterfaces.add( proxyInterface );
		}

		if ( mappedClass.isInterface() ) {
			proxyInterfaces.add( mappedClass );
		}

		Iterator iter = persistentClass.getSubclassIterator();
		while ( iter.hasNext() ) {
			Subclass subclass = ( Subclass ) iter.next();
			Class subclassProxy = subclass.getProxyInterface();
			Class subclassClass = subclass.getMappedClass();
			if ( subclassProxy!=null && !subclassClass.equals( subclassProxy ) ) {
				if ( !proxyInterface.isInterface() ) {
					throw new MappingException(
					        "proxy must be either an interface, or the class itself: " + 
					        subclass.getEntityName()
					);
				}
				proxyInterfaces.add( subclassProxy );
			}
		}

		Iterator properties = persistentClass.getPropertyIterator();
		Class clazz = persistentClass.getMappedClass();
		while ( properties.hasNext() ) {
			Property property = (Property) properties.next();
			Method method = property.getGetter(clazz).getMethod();
			if ( method != null && Modifier.isFinal( method.getModifiers() ) ) {
				log.error(
						"Getters of lazy classes cannot be final: " + persistentClass.getEntityName() + 
						"." + property.getName() 
					);
			}
			method = property.getSetter(clazz).getMethod();
            if ( method != null && Modifier.isFinal( method.getModifiers() ) ) {
				log.error(
						"Setters of lazy classes cannot be final: " + persistentClass.getEntityName() + 
						"." + property.getName() 
					);
			}
		}

		Method idGetterMethod = idGetter==null ? null : idGetter.getMethod();
		Method idSetterMethod = idSetter==null ? null : idSetter.getMethod();

		Method proxyGetIdentifierMethod = idGetterMethod==null || proxyInterface==null ? 
				null :
		        ReflectHelper.getMethod(proxyInterface, idGetterMethod);
		Method proxySetIdentifierMethod = idSetterMethod==null || proxyInterface==null  ? 
				null :
		        ReflectHelper.getMethod(proxyInterface, idSetterMethod);

		ProxyFactory pf = new CGLIBProxyFactory();
		try {
			pf.postInstantiate(
					getEntityName(),
					mappedClass,
					proxyInterfaces,
					proxyGetIdentifierMethod,
					proxySetIdentifierMethod,
					persistentClass.hasEmbeddedIdentifier() ?
			                (AbstractComponentType) persistentClass.getIdentifier().getType() :
			                null
			);
		}
		catch ( HibernateException he ) {
			log.warn( "could not create proxy factory for:" + getEntityName(), he );
			pf = null;
		}
		return pf;
	}

	protected Instantiator buildInstantiator(PersistentClass persistentClass) {
		return new PojoInstantiator( persistentClass, fastClass );
	}

	public void setPropertyValues(Object entity, Object[] values) throws HibernateException {
		if ( !getEntityMetamodel().hasLazyProperties() && optimizer != null ) {
			setPropertyValuesWithOptimizer( entity, values );
		}
		else {
			super.setPropertyValues( entity, values );
		}
	}

	public Object[] getPropertyValues(Object entity) throws HibernateException {
		if ( shouldGetAllProperties( entity ) && optimizer != null ) {
			return getPropertyValuesWithOptimizer( entity );
		}
		else {
			return super.getPropertyValues( entity );
		}
	}

	public Object[] getPropertyValuesToInsert(Object entity, Map mergeMap, SessionImplementor session) throws HibernateException {
		if ( shouldGetAllProperties( entity ) && optimizer != null ) {
			return getPropertyValuesWithOptimizer( entity );
		}
		else {
			return super.getPropertyValuesToInsert( entity, mergeMap, session );
		}
	}

	protected void setPropertyValuesWithOptimizer(Object object, Object[] values) {
		try {
			optimizer.setPropertyValues( object, values );
		}
		catch ( Throwable t ) {
			throw new PropertyAccessException( t,
					ReflectHelper.PROPERTY_SET_EXCEPTION,
					true,
					mappedClass,
					ReflectHelper.getPropertyName( t, optimizer ) 
				);
		}
	}

	protected Object[] getPropertyValuesWithOptimizer(Object object) {
		try {
			return optimizer.getPropertyValues( object );
		}
		catch ( Throwable t ) {
			throw new PropertyAccessException( t,
					ReflectHelper.PROPERTY_GET_EXCEPTION,
					false,
					mappedClass,
					ReflectHelper.getPropertyName( t, optimizer ) 
				);
		}
	}

	public EntityMode getEntityMode() {
		return EntityMode.POJO;
	}

	public Class getMappedClass() {
		return mappedClass;
	}

	public boolean isLifecycleImplementor() {
		return lifecycleImplementor;
	}

	public boolean isValidatableImplementor() {
		return validatableImplementor;
	}

	protected Getter buildPropertyGetter(Property mappedProperty, PersistentClass mappedEntity) {
		return mappedProperty.getGetter( mappedEntity.getMappedClass() );
	}

	protected Setter buildPropertySetter(Property mappedProperty, PersistentClass mappedEntity) {
		return mappedProperty.getSetter( mappedEntity.getMappedClass() );
	}

	public Class getConcreteProxyClass() {
		return proxyInterface;
	}

    //TODO: need to make the majority of this functionality into a top-level support class for custom impl support

	public void afterInitialize(Object entity, boolean lazyPropertiesAreUnfetched, SessionImplementor session) {
		//if ( lazyPropertiesAreUnfetched && getEntityMetamodel().hasLazyProperties() ) {
		if ( isInstrumented() ) {
			Set lazyProps = lazyPropertiesAreUnfetched && getEntityMetamodel().hasLazyProperties() ?
					lazyPropertyNames : null;
			//TODO: if we support multiple fetch groups, we would need
			//      to clone the set of lazy properties!
			FieldInterceptor.initFieldInterceptor( entity, getEntityName(), session, lazyProps );
		}
	}

	public boolean hasUninitializedLazyProperties(Object entity) {
		if ( getEntityMetamodel().hasLazyProperties() ) {
			FieldInterceptor callback = FieldInterceptor.getFieldInterceptor(entity);
			return callback != null && !callback.isInitialized();
		}
		else {
			return false;
		}
	}

	public boolean isInstrumented() {
		return InterceptFieldEnabled.class.isAssignableFrom( getMappedClass() );
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久久99| 婷婷丁香激情综合| 亚洲高清不卡在线观看| 精品一区二区三区在线播放视频 | 日韩视频在线观看一区二区| 国产精品美女www爽爽爽| 日本不卡一区二区三区| av成人免费在线观看| 欧美大白屁股肥臀xxxxxx| 亚洲美女少妇撒尿| 国产91丝袜在线18| 日韩美女一区二区三区| 一区二区三区免费在线观看| 国产美女av一区二区三区| 欧美二区在线观看| 中文字幕一区二区三区不卡 | 日本sm残虐另类| 欧美一区二区视频观看视频| 国产欧美一区二区精品性| 日本va欧美va瓶| 欧美精品1区2区| 亚洲综合色丁香婷婷六月图片| 成人综合激情网| 久久精品欧美日韩| 久久99国产精品免费| 91精品国产综合久久福利软件| 亚洲午夜精品在线| 在线观看日韩电影| 亚洲视频免费看| 一本色道综合亚洲| 亚洲欧美韩国综合色| av一区二区三区| 亚洲国产激情av| 国产99久久久精品| 国产精品美女视频| 972aa.com艺术欧美| 一区二区三区在线视频观看58| 99久久夜色精品国产网站| 中文字幕的久久| 91麻豆123| 亚洲亚洲人成综合网络| 欧美日精品一区视频| 午夜电影一区二区三区| 日韩一区二区三区在线观看| 另类成人小视频在线| 精品sm在线观看| 国产91精品一区二区麻豆网站| 国产精品福利一区| 一本色道久久综合精品竹菊| 伊人婷婷欧美激情| 日韩亚洲欧美综合| 国产99久久久国产精品潘金网站| 国产三级欧美三级日产三级99| 国产成人综合亚洲91猫咪| 国产精品久久久久久久久免费樱桃| av中文字幕不卡| 洋洋av久久久久久久一区| 欧美精品三级日韩久久| 久久99久久99精品免视看婷婷 | 懂色av一区二区三区蜜臀| 亚洲日本va午夜在线电影| 欧美精三区欧美精三区| 精品亚洲国内自在自线福利| 国产精品久久久久久久午夜片| 欧美日韩国产免费| 狠狠色狠狠色综合系列| 亚洲欧美视频在线观看视频| 日韩视频免费观看高清完整版 | 欧美天堂亚洲电影院在线播放| 青青草97国产精品免费观看无弹窗版| 国产三区在线成人av| 欧美性三三影院| 国产精品一区二区黑丝| 亚洲一区在线观看免费| 欧美激情综合在线| 在线成人午夜影院| 9久草视频在线视频精品| 免费人成网站在线观看欧美高清| 国产日韩欧美精品电影三级在线| 欧美色电影在线| 成人黄色网址在线观看| 卡一卡二国产精品| 一区二区三区在线视频免费| 国产午夜一区二区三区| 欧美精品乱人伦久久久久久| www.久久久久久久久| 久久se精品一区精品二区| 亚洲黄色av一区| 国产精品三级在线观看| 欧美videos中文字幕| 欧美日韩一区二区在线观看视频 | 国产真实乱对白精彩久久| 亚洲成在人线在线播放| 国产精品免费看片| 久久久精品中文字幕麻豆发布| 制服丝袜亚洲网站| 欧美午夜精品一区二区三区| 99精品视频一区二区三区| 国产精品正在播放| 激情综合五月天| 日韩精品福利网| 亚洲国产精品自拍| 亚洲激情在线播放| 国产精品传媒入口麻豆| 亚洲国产精品t66y| 国产日韩精品久久久| 精品国产91洋老外米糕| 日韩一区二区精品葵司在线| 欧美日韩五月天| 欧美日韩在线三区| 欧美日韩国产免费| 在线不卡一区二区| 欧美丰满少妇xxxbbb| 91麻豆精品91久久久久久清纯| 欧美日韩精品免费观看视频 | 久久免费视频色| 久久久一区二区| 久久久精品综合| 国产亚洲综合在线| 日本一区二区免费在线观看视频| 久久久久国产精品免费免费搜索| 精品剧情在线观看| 国产婷婷色一区二区三区四区 | 免费在线观看视频一区| 调教+趴+乳夹+国产+精品| 天天色天天爱天天射综合| 视频在线在亚洲| 精品一区二区三区视频 | 色婷婷精品大在线视频| 91在线无精精品入口| 欧美亚男人的天堂| 91麻豆精品国产综合久久久久久| 日韩欧美国产一区在线观看| 亚洲精品一区在线观看| 欧美国产1区2区| 亚洲在线免费播放| 奇米四色…亚洲| 国产传媒欧美日韩成人| 色哟哟一区二区| 欧美一级欧美一级在线播放| 久久日韩粉嫩一区二区三区| 国产精品二三区| 亚洲一区av在线| 精品一区二区av| 色乱码一区二区三区88| 欧美福利一区二区| 欧美高清在线精品一区| 亚洲一区二区三区国产| 国产一区二区美女诱惑| 97se狠狠狠综合亚洲狠狠| 日韩一二三区视频| 亚洲日本韩国一区| 久久精品国产99国产精品| 成人黄页毛片网站| 日韩写真欧美这视频| 亚洲色图在线视频| 久久99日本精品| 在线中文字幕一区二区| 久久蜜桃香蕉精品一区二区三区| 夜夜爽夜夜爽精品视频| 国产高清不卡一区| 欧美日本免费一区二区三区| 国产女主播在线一区二区| 天堂蜜桃91精品| 成人高清av在线| 精品久久五月天| 亚洲五月六月丁香激情| 成人性生交大片免费| 日韩欧美国产wwwww| 一区二区三区欧美激情| 国产成人免费视频精品含羞草妖精| 欧美日韩成人综合在线一区二区| 欧美国产成人精品| 久久疯狂做爰流白浆xx| 欧美日本视频在线| 樱桃国产成人精品视频| 不卡av电影在线播放| 欧美成人女星排行榜| 香蕉成人伊视频在线观看| 成人avav影音| 国产女人水真多18毛片18精品视频| 日本美女一区二区三区视频| 日韩精品一区二区三区四区视频 | 久久久亚洲国产美女国产盗摄 | 亚洲国产精品尤物yw在线观看| 成人av集中营| 国产精品天天看| 高清久久久久久| 久久久国产综合精品女国产盗摄| 美女在线一区二区| 欧美久久久久久久久久| 日韩影院免费视频| 欧美嫩在线观看| 亚洲成av人综合在线观看| 欧美伊人久久久久久午夜久久久久| 亚洲丝袜另类动漫二区| 91丨porny丨首页| 亚洲欧美另类图片小说| 91浏览器入口在线观看| 一个色综合网站|