当前位置: 首页>>代码示例>>Java>>正文


Java EntityPersister.createProxy方法代码示例

本文整理汇总了Java中org.hibernate.persister.entity.EntityPersister.createProxy方法的典型用法代码示例。如果您正苦于以下问题:Java EntityPersister.createProxy方法的具体用法?Java EntityPersister.createProxy怎么用?Java EntityPersister.createProxy使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.hibernate.persister.entity.EntityPersister的用法示例。


在下文中一共展示了EntityPersister.createProxy方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: internalLoad

import org.hibernate.persister.entity.EntityPersister; //导入方法依赖的package包/类
@Override
public Object internalLoad(
		String entityName,
        Serializable id,
        boolean eager,
        boolean nullable) throws HibernateException {
	errorIfClosed();
	EntityPersister persister = getFactory().getEntityPersister( entityName );
	// first, try to load it from the temp PC associated to this SS
	Object loaded = temporaryPersistenceContext.getEntity( generateEntityKey( id, persister ) );
	if ( loaded != null ) {
		// we found it in the temp PC.  Should indicate we are in the midst of processing a result set
		// containing eager fetches via join fetch
		return loaded;
	}
	if ( !eager && persister.hasProxy() ) {
		// if the metadata allowed proxy creation and caller did not request forceful eager loading,
		// generate a proxy
		return persister.createProxy( id, this );
	}
	// otherwise immediately materialize it
	return get( entityName, id );
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:24,代码来源:StatelessSessionImpl.java

示例2: createProxyIfNecessary

import org.hibernate.persister.entity.EntityPersister; //导入方法依赖的package包/类
/**
 * If there is already a corresponding proxy associated with the
 * persistence context, return it; otherwise create a proxy, associate it
 * with the persistence context, and return the just-created proxy.
 *
 * @param event The initiating load request event
 * @param persister The persister corresponding to the entity to be loaded
 * @param keyToLoad The key of the entity to be loaded
 * @param options The defined load options
 * @param persistenceContext The originating session
 *
 * @return The created/existing proxy
 */
private Object createProxyIfNecessary(
		final LoadEvent event,
		final EntityPersister persister,
		final EntityKey keyToLoad,
		final LoadEventListener.LoadType options,
		final PersistenceContext persistenceContext) {
	Object existing = persistenceContext.getEntity( keyToLoad );
	if ( existing != null ) {
		// return existing object or initialized proxy (unless deleted)
		LOG.trace( "Entity found in session cache" );
		if ( options.isCheckDeleted() ) {
			EntityEntry entry = persistenceContext.getEntry( existing );
			Status status = entry.getStatus();
			if ( status == Status.DELETED || status == Status.GONE ) {
				return null;
			}
		}
		return existing;
	}
	LOG.trace( "Creating new proxy for entity" );
	// return new uninitialized proxy
	Object proxy = persister.createProxy( event.getEntityId(), event.getSession() );
	persistenceContext.getBatchFetchQueue().addBatchLoadableEntityKey( keyToLoad );
	persistenceContext.addProxy( keyToLoad, proxy );
	return proxy;
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:40,代码来源:DefaultLoadEventListener.java

示例3: narrowProxy

import org.hibernate.persister.entity.EntityPersister; //导入方法依赖的package包/类
@Override
@SuppressWarnings("unchecked")
public Object narrowProxy(Object proxy, EntityPersister persister, EntityKey key, Object object)
		throws HibernateException {

	final Class concreteProxyClass = persister.getConcreteProxyClass();
	final boolean alreadyNarrow = concreteProxyClass.isInstance( proxy );

	if ( !alreadyNarrow ) {
		LOG.narrowingProxy( concreteProxyClass );

		// If an impl is passed, there is really no point in creating a proxy.
		// It would just be extra processing.  Just return the impl
		if ( object != null ) {
			proxiesByKey.remove( key );
			return object;
		}

		// Similarly, if the original HibernateProxy is initialized, there
		// is again no point in creating a proxy.  Just return the impl
		final HibernateProxy originalHibernateProxy = (HibernateProxy) proxy;
		if ( !originalHibernateProxy.getHibernateLazyInitializer().isUninitialized() ) {
			final Object impl = originalHibernateProxy.getHibernateLazyInitializer().getImplementation();
			// can we return it?
			if ( concreteProxyClass.isInstance( impl ) ) {
				proxiesByKey.remove( key );
				return impl;
			}
		}


		// Otherwise, create the narrowed proxy
		final HibernateProxy narrowedProxy = (HibernateProxy) persister.createProxy( key.getIdentifier(), session );

		// set the read-only/modifiable mode in the new proxy to what it was in the original proxy
		final boolean readOnlyOrig = originalHibernateProxy.getHibernateLazyInitializer().isReadOnly();
		narrowedProxy.getHibernateLazyInitializer().setReadOnly( readOnlyOrig );

		return narrowedProxy;
	}
	else {

		if ( object != null ) {
			final LazyInitializer li = ( (HibernateProxy) proxy ).getHibernateLazyInitializer();
			li.setImplementation( object );
		}
		return proxy;
	}
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:50,代码来源:StatefulPersistenceContext.java


注:本文中的org.hibernate.persister.entity.EntityPersister.createProxy方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。