org.hibernate.persister.entity.EntityPersister#instantiate ( )源码实例Demo

下面列出了org.hibernate.persister.entity.EntityPersister#instantiate ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: lams   文件: SessionImpl.java
/**
 * give the interceptor an opportunity to override the default instantiation
 */
@Override
public Object instantiate(EntityPersister persister, Serializable id) throws HibernateException {
	checkOpenOrWaitingForAutoClose();
	checkTransactionSynchStatus();
	Object result = getInterceptor().instantiate(
			persister.getEntityName(),
			persister.getEntityMetamodel().getEntityMode(),
			id
	);
	if ( result == null ) {
		result = persister.instantiate( id, this );
	}
	delayedAfterCompletion();
	return result;
}
 
源代码2 项目: cacheonix-core   文件: SessionImpl.java
/**
 * give the interceptor an opportunity to override the default instantiation
 */
public Object instantiate(EntityPersister persister, Serializable id) throws HibernateException {
	errorIfClosed();
	checkTransactionSynchStatus();
	Object result = interceptor.instantiate( persister.getEntityName(), entityMode, id );
	if ( result == null ) {
		result = persister.instantiate( id, entityMode );
	}
	return result;
}
 
protected void entityIsTransient(MergeEvent event, Map copyCache) {
	
	log.trace("merging transient instance");
	
	final Object entity = event.getEntity();
	final EventSource source = event.getSession();

	final EntityPersister persister = source.getEntityPersister( event.getEntityName(), entity );
	final String entityName = persister.getEntityName();
	
	final Serializable id = persister.hasIdentifierProperty() ?
			persister.getIdentifier( entity, source.getEntityMode() ) :
	        null;
	
	final Object copy = persister.instantiate( id, source.getEntityMode() );  //TODO: should this be Session.instantiate(Persister, ...)?
	copyCache.put(entity, copy); //before cascade!
	
	// cascade first, so that all unsaved objects get their
	// copy created before we actually copy
	//cascadeOnMerge(event, persister, entity, copyCache, Cascades.CASCADE_BEFORE_MERGE);
	super.cascadeBeforeSave(source, persister, entity, copyCache);
	copyValues(persister, entity, copy, source, copyCache, ForeignKeyDirection.FOREIGN_KEY_FROM_PARENT);
	
	//this bit is only *really* absolutely necessary for handling 
	//requestedId, but is also good if we merge multiple object 
	//graphs, since it helps ensure uniqueness
	final Serializable requestedId = event.getRequestedId();
	if (requestedId==null) {
		saveWithGeneratedId( copy, entityName, copyCache, source, false );
	}
	else {
		saveWithRequestedId( copy, requestedId, entityName, copyCache, source );
	}
	
	// cascade first, so that all unsaved objects get their 
	// copy created before we actually copy
	super.cascadeAfterSave(source, persister, entity, copyCache);
	copyValues(persister, entity, copy, source, copyCache, ForeignKeyDirection.FOREIGN_KEY_TO_PARENT);
	
	event.setResult(copy);

}