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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? loader.java

?? 一個Java持久層類庫
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
//$Id: Loader.java 11398 2007-04-10 14:54:07Z steve.ebersole@jboss.com $package org.hibernate.loader;import java.io.Serializable;import java.sql.CallableStatement;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.hibernate.AssertionFailure;import org.hibernate.HibernateException;import org.hibernate.LockMode;import org.hibernate.QueryException;import org.hibernate.ScrollMode;import org.hibernate.ScrollableResults;import org.hibernate.StaleObjectStateException;import org.hibernate.WrongClassException;import org.hibernate.cache.FilterKey;import org.hibernate.cache.QueryCache;import org.hibernate.cache.QueryKey;import org.hibernate.collection.PersistentCollection;import org.hibernate.dialect.Dialect;import org.hibernate.engine.EntityKey;import org.hibernate.engine.EntityUniqueKey;import org.hibernate.engine.PersistenceContext;import org.hibernate.engine.QueryParameters;import org.hibernate.engine.RowSelection;import org.hibernate.engine.SessionFactoryImplementor;import org.hibernate.engine.SessionImplementor;import org.hibernate.engine.SubselectFetch;import org.hibernate.engine.TwoPhaseLoad;import org.hibernate.engine.TypedValue;import org.hibernate.event.EventSource;import org.hibernate.event.PostLoadEvent;import org.hibernate.event.PreLoadEvent;import org.hibernate.exception.JDBCExceptionHelper;import org.hibernate.hql.HolderInstantiator;import org.hibernate.impl.FetchingScrollableResultsImpl;import org.hibernate.impl.ScrollableResultsImpl;import org.hibernate.jdbc.ColumnNameCache;import org.hibernate.jdbc.ResultSetWrapper;import org.hibernate.persister.collection.CollectionPersister;import org.hibernate.persister.entity.EntityPersister;import org.hibernate.persister.entity.Loadable;import org.hibernate.persister.entity.UniqueKeyLoadable;import org.hibernate.pretty.MessageHelper;import org.hibernate.proxy.HibernateProxy;import org.hibernate.transform.ResultTransformer;import org.hibernate.type.AssociationType;import org.hibernate.type.EntityType;import org.hibernate.type.Type;import org.hibernate.type.VersionType;import org.hibernate.util.StringHelper;/** * Abstract superclass of object loading (and querying) strategies. This class implements * useful common functionality that concrete loaders delegate to. It is not intended that this * functionality would be directly accessed by client code. (Hence, all methods of this class * are declared <tt>protected</tt> or <tt>private</tt>.) This class relies heavily upon the * <tt>Loadable</tt> interface, which is the contract between this class and * <tt>EntityPersister</tt>s that may be loaded by it.<br> * <br> * The present implementation is able to load any number of columns of entities and at most * one collection role per query. * * @author Gavin King * @see org.hibernate.persister.entity.Loadable */public abstract class Loader {	private static final Logger log = LoggerFactory.getLogger( Loader.class );	private final SessionFactoryImplementor factory;	private ColumnNameCache columnNameCache;	public Loader(SessionFactoryImplementor factory) {		this.factory = factory;	}	/**	 * The SQL query string to be called; implemented by all subclasses	 *	 * @return The sql command this loader should use to get its {@link ResultSet}.	 */	protected abstract String getSQLString();	/**	 * An array of persisters of entity classes contained in each row of results;	 * implemented by all subclasses	 *	 * @return The entity persisters.	 */	protected abstract Loadable[] getEntityPersisters();		/**	 * An array indicating whether the entities have eager property fetching	 * enabled.	 *	 * @return Eager property fetching indicators.	 */	protected boolean[] getEntityEagerPropertyFetches() {		return null;	}	/**	 * An array of indexes of the entity that owns a one-to-one association	 * to the entity at the given index (-1 if there is no "owner").  The	 * indexes contained here are relative to the result of	 * {@link #getEntityPersisters}.	 *	 * @return The owner indicators (see discussion above).	 */	protected int[] getOwners() {		return null;	}	/**	 * An array of the owner types corresponding to the {@link #getOwners()}	 * returns.  Indices indicating no owner would be null here.	 *	 * @return The types for the owners.	 */	protected EntityType[] getOwnerAssociationTypes() {		return null;	}	/**	 * An (optional) persister for a collection to be initialized; only 	 * collection loaders return a non-null value	 */	protected CollectionPersister[] getCollectionPersisters() {		return null;	}	/**	 * Get the index of the entity that owns the collection, or -1	 * if there is no owner in the query results (ie. in the case of a	 * collection initializer) or no collection.	 */	protected int[] getCollectionOwners() {		return null;	}	/**	 * What lock mode does this load entities with?	 *	 * @param lockModes a collection of lock modes specified dynamically via the Query interface	 */	protected abstract LockMode[] getLockModes(Map lockModes);	/**	 * Append <tt>FOR UPDATE OF</tt> clause, if necessary. This	 * empty superclass implementation merely returns its first	 * argument.	 */	protected String applyLocks(String sql, Map lockModes, Dialect dialect) throws HibernateException {		return sql;	}	/**	 * Does this query return objects that might be already cached	 * by the session, whose lock mode may need upgrading	 */	protected boolean upgradeLocks() {		return false;	}	/**	 * Return false is this loader is a batch entity loader	 */	protected boolean isSingleRowLoader() {		return false;	}	/**	 * Get the SQL table aliases of entities whose	 * associations are subselect-loadable, returning	 * null if this loader does not support subselect	 * loading	 */	protected String[] getAliases() {		return null;	}	/**	 * Modify the SQL, adding lock hints and comments, if necessary	 */	protected String preprocessSQL(String sql, QueryParameters parameters, Dialect dialect)			throws HibernateException {				sql = applyLocks( sql, parameters.getLockModes(), dialect );				return getFactory().getSettings().isCommentsEnabled() ?				prependComment( sql, parameters ) : sql;	}	private String prependComment(String sql, QueryParameters parameters) {		String comment = parameters.getComment();		if ( comment == null ) {			return sql;		}		else {			return new StringBuffer( comment.length() + sql.length() + 5 )					.append( "/* " )					.append( comment )					.append( " */ " )					.append( sql )					.toString();		}	}	/**	 * Execute an SQL query and attempt to instantiate instances of the class mapped by the given	 * persister from each row of the <tt>ResultSet</tt>. If an object is supplied, will attempt to	 * initialize that object. If a collection is supplied, attempt to initialize that collection.	 */	private List doQueryAndInitializeNonLazyCollections(final SessionImplementor session,														final QueryParameters queryParameters,														final boolean returnProxies) 		throws HibernateException, SQLException {		final PersistenceContext persistenceContext = session.getPersistenceContext();		persistenceContext.beforeLoad();		List result;		try {			result = doQuery( session, queryParameters, returnProxies );		}		finally {			persistenceContext.afterLoad();		}		persistenceContext.initializeNonLazyCollections();		return result;	}	/**	 * Loads a single row from the result set.  This is the processing used from the	 * ScrollableResults where no collection fetches were encountered.	 *	 * @param resultSet The result set from which to do the load.	 * @param session The session from which the request originated.	 * @param queryParameters The query parameters specified by the user.	 * @param returnProxies Should proxies be generated	 * @return The loaded "row".	 * @throws HibernateException	 */	public Object loadSingleRow(	        final ResultSet resultSet,	        final SessionImplementor session,	        final QueryParameters queryParameters,	        final boolean returnProxies) throws HibernateException {		final int entitySpan = getEntityPersisters().length;		final List hydratedObjects = entitySpan == 0 ? 				null : new ArrayList( entitySpan );		final Object result;		try {			result = getRowFromResultSet(			        resultSet,					session,					queryParameters,					getLockModes( queryParameters.getLockModes() ),					null,					hydratedObjects,					new EntityKey[entitySpan],					returnProxies				);		}		catch ( SQLException sqle ) {			throw JDBCExceptionHelper.convert(			        factory.getSQLExceptionConverter(),			        sqle,			        "could not read next row of results",			        getSQLString()				);		}		initializeEntitiesAndCollections( 				hydratedObjects, 				resultSet, 				session, 				queryParameters.isReadOnly() 			);		session.getPersistenceContext().initializeNonLazyCollections();		return result;	}	private Object sequentialLoad(	        final ResultSet resultSet,	        final SessionImplementor session,	        final QueryParameters queryParameters,	        final boolean returnProxies,	        final EntityKey keyToRead) throws HibernateException {		final int entitySpan = getEntityPersisters().length;		final List hydratedObjects = entitySpan == 0 ? 				null : new ArrayList( entitySpan );		Object result = null;		final EntityKey[] loadedKeys = new EntityKey[entitySpan];		try {			do {				Object loaded = getRowFromResultSet(						resultSet,						session,						queryParameters,						getLockModes( queryParameters.getLockModes() ),						null,						hydratedObjects,						loadedKeys,						returnProxies					);				if ( result == null ) {					result = loaded;				}			} 			while ( keyToRead.equals( loadedKeys[0] ) && resultSet.next() );		}		catch ( SQLException sqle ) {			throw JDBCExceptionHelper.convert(			        factory.getSQLExceptionConverter(),			        sqle,			        "could not perform sequential read of results (forward)",			        getSQLString()				);		}		initializeEntitiesAndCollections( 				hydratedObjects, 				resultSet, 				session, 				queryParameters.isReadOnly() 			);		session.getPersistenceContext().initializeNonLazyCollections();		return result;	}	/**	 * Loads a single logical row from the result set moving forward.  This is the	 * processing used from the ScrollableResults where there were collection fetches	 * encountered; thus a single logical row may have multiple rows in the underlying	 * result set.	 *	 * @param resultSet The result set from which to do the load.	 * @param session The session from which the request originated.	 * @param queryParameters The query parameters specified by the user.	 * @param returnProxies Should proxies be generated	 * @return The loaded "row".	 * @throws HibernateException	 */	public Object loadSequentialRowsForward(	        final ResultSet resultSet,	        final SessionImplementor session,	        final QueryParameters queryParameters,	        final boolean returnProxies) throws HibernateException {		// note that for sequential scrolling, we make the assumption that		// the first persister element is the "root entity"		try {			if ( resultSet.isAfterLast() ) {				// don't even bother trying to read further				return null;			}			if ( resultSet.isBeforeFirst() ) {				resultSet.next();			}			// We call getKeyFromResultSet() here so that we can know the			// key value upon which to perform the breaking logic.  However,			// it is also then called from getRowFromResultSet() which is certainly			// not the most efficient.  But the call here is needed, and there			// currently is no other way without refactoring of the doQuery()/getRowFromResultSet()			// methods			final EntityKey currentKey = getKeyFromResultSet(					0,					getEntityPersisters()[0],					null,					resultSet,					session				);			return sequentialLoad( resultSet, session, queryParameters, returnProxies, currentKey );		}		catch ( SQLException sqle ) {			throw JDBCExceptionHelper.convert(			        factory.getSQLExceptionConverter(),			        sqle,			        "could not perform sequential read of results (forward)",			        getSQLString()				);		}	}	/**	 * Loads a single logical row from the result set moving forward.  This is the	 * processing used from the ScrollableResults where there were collection fetches	 * encountered; thus a single logical row may have multiple rows in the underlying	 * result set.	 *	 * @param resultSet The result set from which to do the load.	 * @param session The session from which the request originated.	 * @param queryParameters The query parameters specified by the user.	 * @param returnProxies Should proxies be generated	 * @return The loaded "row".	 * @throws HibernateException	 */	public Object loadSequentialRowsReverse(	        final ResultSet resultSet,	        final SessionImplementor session,	        final QueryParameters queryParameters,	        final boolean returnProxies,	        final boolean isLogicallyAfterLast) throws HibernateException {

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩网站在线看片你懂的| 日韩精品亚洲专区| 国产美女av一区二区三区| 欧美xingq一区二区| 久久91精品久久久久久秒播| 精品久久久久久久一区二区蜜臀| 久久成人免费网| 国产亚洲女人久久久久毛片| 国产xxx精品视频大全| 国产精品三级久久久久三级| 97成人超碰视| 日日欢夜夜爽一区| 久久亚洲一级片| 波波电影院一区二区三区| 一区二区三区产品免费精品久久75| 欧美日韩久久久一区| 久久99国产精品久久| 国产精品进线69影院| 欧日韩精品视频| 老司机精品视频在线| 国产精品短视频| 91精品国产综合久久小美女| 国产精品一区二区在线观看不卡| 中文字幕一区二区三区在线观看| 欧美猛男超大videosgay| 性做久久久久久久久| 石原莉奈在线亚洲二区| 日韩欧美亚洲一区二区| 国产99久久久久| 亚洲综合在线电影| 精品国产乱码久久久久久1区2区 | 一区二区三区中文字幕精品精品| 欧美人伦禁忌dvd放荡欲情| 激情五月婷婷综合| 亚洲美女精品一区| 久久午夜老司机| 在线观看精品一区| 国产又粗又猛又爽又黄91精品| 亚洲三级在线免费观看| 精品理论电影在线观看| 日本道免费精品一区二区三区| 精品亚洲成a人| 一区二区三区免费观看| 国产蜜臀97一区二区三区| 欧美区视频在线观看| 成人深夜福利app| 男人操女人的视频在线观看欧美 | 亚洲精品在线网站| 欧美亚洲图片小说| 成人一级黄色片| 麻豆高清免费国产一区| 亚洲综合成人网| 亚洲欧洲精品天堂一级| 欧美白人最猛性xxxxx69交| 欧美图区在线视频| av午夜精品一区二区三区| 国产专区综合网| 免费高清不卡av| 午夜亚洲福利老司机| 亚洲视频资源在线| 国产精品女人毛片| 国产亚洲欧美中文| 精品处破学生在线二十三| 欧美一级夜夜爽| 777久久久精品| 5月丁香婷婷综合| 欧美日韩午夜精品| 欧美午夜精品久久久久久孕妇| 成人短视频下载| 成人综合在线观看| 国产成人在线网站| 国产露脸91国语对白| 美女视频第一区二区三区免费观看网站| 亚洲乱码日产精品bd| 亚洲日本va在线观看| 综合在线观看色| 亚洲视频一区二区免费在线观看| 国产精品嫩草影院av蜜臀| 中文字幕乱码久久午夜不卡| 午夜精品成人在线| 一区二区在线观看av| 伊人色综合久久天天| 一级做a爱片久久| 一区二区三区**美女毛片| 一区二区三区鲁丝不卡| 亚洲自拍另类综合| 一个色在线综合| 亚洲成人黄色小说| 日韩高清在线不卡| 免费在线观看一区| 久久草av在线| 成人久久18免费网站麻豆| 99麻豆久久久国产精品免费优播| www.在线欧美| 欧美日韩中文字幕一区二区| 欧美理论电影在线| 日韩欧美亚洲一区二区| 欧美激情一区二区三区蜜桃视频 | 精彩视频一区二区三区| 国产老肥熟一区二区三区| www.日韩av| 色哟哟日韩精品| 欧美日韩国产片| 久久综合狠狠综合| 国产精品天美传媒| 亚洲综合男人的天堂| 轻轻草成人在线| 国产成人av资源| 在线免费观看视频一区| 91精品国产91久久久久久一区二区 | 久久久综合视频| 亚洲欧美日韩综合aⅴ视频| 午夜精品福利一区二区三区av| 黄色成人免费在线| 日本道精品一区二区三区| 日韩色在线观看| 亚洲欧美怡红院| 看电视剧不卡顿的网站| av成人动漫在线观看| 欧美天堂亚洲电影院在线播放| 欧美大度的电影原声| 一区在线观看视频| 男男成人高潮片免费网站| 99久久伊人网影院| 日韩视频一区在线观看| 亚洲精品国产a| 国产又粗又猛又爽又黄91精品| 欧美在线你懂的| 久久综合色之久久综合| 亚洲国产综合91精品麻豆| 国产麻豆午夜三级精品| 欧美日韩亚洲国产综合| 最新热久久免费视频| 国内外成人在线| 欧美色老头old∨ideo| 日本一区二区动态图| 蜜桃久久精品一区二区| 欧洲在线/亚洲| 一区精品在线播放| 黑人巨大精品欧美黑白配亚洲| 在线视频国内一区二区| 国产精品丝袜在线| 麻豆一区二区三| 欧美剧情片在线观看| 中文字幕一区二| 国产精品996| 欧美tk丨vk视频| 亚洲女女做受ⅹxx高潮| 亚洲精品视频在线观看免费| 国产在线一区观看| 日韩一本二本av| 亚洲国产你懂的| 91黄色小视频| 中文字幕一区二区三区在线播放| 国产精品69久久久久水密桃| 日韩欧美一级二级三级久久久 | 亚洲福利一区二区三区| 成人一区二区三区视频在线观看| 日韩免费观看高清完整版在线观看| 性做久久久久久久免费看| 91久久精品一区二区二区| 成人欧美一区二区三区白人| 风流少妇一区二区| 久久久精品2019中文字幕之3| 免费不卡在线视频| 欧美一区二区在线视频| 视频一区二区三区在线| 69堂精品视频| 日日欢夜夜爽一区| 欧美一区二区三区四区五区 | 日韩激情中文字幕| 欧美欧美欧美欧美| 丝袜美腿亚洲色图| 在线不卡a资源高清| 日本不卡视频在线| 欧美一二三四在线| 黄网站免费久久| 国产日本欧洲亚洲| 91蝌蚪porny| 亚洲国产欧美在线| 欧美一区二视频| 国产精品一区二区三区网站| 亚洲国产精品精华液ab| 91污片在线观看| 亚洲成人av中文| 91精品在线观看入口| 精品午夜一区二区三区在线观看| 26uuu亚洲综合色| 成人av免费在线| 一区二区高清免费观看影视大全| 欧美狂野另类xxxxoooo| 久久精品国产一区二区| 国产亚洲人成网站| 91亚洲精品一区二区乱码| 亚洲aaa精品| 久久久三级国产网站| 97精品国产露脸对白| 日韩国产精品91| 亚洲国产高清不卡| 欧美色图激情小说|