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

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

?? abstractstatementexecutor.java

?? hibernate-3.1.3-all-src.zip 面向?qū)ο蟮脑L問(wèn)數(shù)據(jù)庫(kù)工具
?? JAVA
字號(hào):
// $Id: AbstractStatementExecutor.java 9261 2006-02-10 17:29:26Z steveebersole $
package org.hibernate.hql.ast.exec;

import java.sql.PreparedStatement;
import java.sql.Connection;
import java.sql.Statement;

import org.hibernate.HibernateException;
import org.hibernate.action.BulkOperationCleanupAction;
import org.hibernate.engine.SessionFactoryImplementor;
import org.hibernate.engine.SessionImplementor;
import org.hibernate.engine.transaction.Isolater;
import org.hibernate.engine.transaction.IsolatedWork;
import org.hibernate.event.EventSource;
import org.hibernate.hql.ast.HqlSqlWalker;
import org.hibernate.hql.ast.SqlGenerator;
import org.hibernate.persister.entity.Queryable;
import org.hibernate.sql.InsertSelect;
import org.hibernate.sql.Select;
import org.hibernate.sql.SelectFragment;
import org.hibernate.util.StringHelper;

import antlr.RecognitionException;
import antlr.collections.AST;

import org.apache.commons.logging.Log;

/**
 * Implementation of AbstractStatementExecutor.
 *
 * @author Steve Ebersole
 */
public abstract class AbstractStatementExecutor implements StatementExecutor {

	private final Log log;
	private final HqlSqlWalker walker;

	public AbstractStatementExecutor(HqlSqlWalker walker, Log log) {
		this.walker = walker;
		this.log = log;
	}

	protected HqlSqlWalker getWalker() {
		return walker;
	}

	protected SessionFactoryImplementor getFactory() {
		return walker.getSessionFactoryHelper().getFactory();
	}

	protected abstract Queryable[] getAffectedQueryables();

	protected String generateIdInsertSelect(Queryable persister, String tableAlias, AST whereClause) {
		Select select = new Select( getFactory().getDialect() );
		SelectFragment selectFragment = new SelectFragment()
				.addColumns( tableAlias, persister.getIdentifierColumnNames(), persister.getIdentifierColumnNames() );
		select.setSelectClause( selectFragment.toFragmentString().substring( 2 ) );

		String rootTableName = persister.getTableName();
		String fromJoinFragment = persister.fromJoinFragment( tableAlias, true, false );
		String whereJoinFragment = persister.whereJoinFragment( tableAlias, true, false );

		select.setFromClause( rootTableName + ' ' + tableAlias + fromJoinFragment );

		if ( whereJoinFragment == null ) {
			whereJoinFragment = "";
		}
		else {
			whereJoinFragment = whereJoinFragment.trim();
			if ( whereJoinFragment.startsWith( "and" ) ) {
				whereJoinFragment = whereJoinFragment.substring( 4 );
			}
		}

		String userWhereClause = "";
		if ( whereClause.getNumberOfChildren() != 0 ) {
			// If a where clause was specified in the update/delete query, use it to limit the
			// returned ids here...
			try {
				SqlGenerator sqlGenerator = new SqlGenerator( getFactory() );
				sqlGenerator.whereClause( whereClause );
				userWhereClause = sqlGenerator.getSQL().substring( 7 );  // strip the " where "
			}
			catch ( RecognitionException e ) {
				throw new HibernateException( "Unable to generate id select for DML operation", e );
			}
			if ( whereJoinFragment.length() > 0 ) {
				whereJoinFragment += " and ";
			}
		}

		select.setWhereClause( whereJoinFragment + userWhereClause );

		InsertSelect insert = new InsertSelect( getFactory().getDialect() );
		if ( getFactory().getSettings().isCommentsEnabled() && getFactory().getDialect().supportsCommentOn() ) {
			insert.setComment( "insert-select for " + persister.getEntityName() + " ids" );
		}
		insert.setTableName( persister.getTemporaryIdTableName() );
		insert.setSelect( select );
		return insert.toStatementString();
	}

	protected String generateIdSubselect(Queryable persister) {
		return "select " + StringHelper.join( ", ", persister.getIdentifierColumnNames() ) +
			        " from " + persister.getTemporaryIdTableName();
	}

	protected void createTemporaryTableIfNecessary(final Queryable persister, final SessionImplementor session) {
		// Don't really know all the codes required to adequately decipher returned jdbc exceptions here.
		// simply allow the failure to be eaten and the subsequent insert-selects/deletes should fail
		IsolatedWork work = new IsolatedWork() {
			public void doWork(Connection connection) throws HibernateException {
				Statement stmnt = null;
				try {
					stmnt = connection.createStatement();
					stmnt.executeUpdate( persister.getTemporaryIdTableDDL() );
				}
				catch( Throwable t ) {
					log.debug( "unable to create temporary id table [" + t.getMessage() + "]" );
				}
				finally {
					if ( stmnt != null ) {
						try {
							stmnt.close();
						}
						catch( Throwable ignore ) {
							// ignore
						}
					}
				}
			}
		};
		if ( getFactory().getDialect().performTemporaryTableDDLInIsolation() ) {
			Isolater.doIsolatedWork( work, session );
		}
		else {
			work.doWork( session.getJDBCContext().getConnectionManager().getConnection() );
			session.getJDBCContext().getConnectionManager().afterStatement();
		}
	}

	protected void dropTemporaryTableIfNecessary(final Queryable persister, final SessionImplementor session) {
		if ( getFactory().getDialect().dropTemporaryTableAfterUse() ) {
			IsolatedWork work = new IsolatedWork() {
				public void doWork(Connection connection) throws HibernateException {
					Statement stmnt = null;
					try {
						stmnt = connection.createStatement();
						stmnt.executeUpdate( "drop table " + persister.getTemporaryIdTableName() );
					}
					catch( Throwable t ) {
						log.warn( "unable to drop temporary id table after use", t );
					}
					finally {
						if ( stmnt != null ) {
							try {
								stmnt.close();
							}
							catch( Throwable ignore ) {
								// ignore
							}
						}
					}
				}
			};
			if ( getFactory().getDialect().performTemporaryTableDDLInIsolation() ) {
				Isolater.doIsolatedWork( work, session );
			}
			else {
				work.doWork( session.getJDBCContext().getConnectionManager().getConnection() );
				session.getJDBCContext().getConnectionManager().afterStatement();
			}
		}
		else {
			// at the very least cleanup the data :)
			PreparedStatement ps = null;
			try {
				ps = session.getBatcher().prepareStatement( "delete from " + persister.getTemporaryIdTableName() );
				ps.executeUpdate();
			}
			catch( Throwable t ) {
				log.warn( "unable to cleanup temporary id table after use", t );
			}
			finally {
				if ( ps != null ) {
					try {
						session.getBatcher().closeStatement( ps );
					}
					catch( Throwable ignore ) {
						// ignore
					}
				}
			}
		}
	}

	protected void coordinateSharedCacheCleanup(SessionImplementor session) {
		BulkOperationCleanupAction action = new BulkOperationCleanupAction( session, getAffectedQueryables() );

		action.init();

		if ( session.isEventSource() ) {
			( ( EventSource ) session ).getActionQueue().addAction( action );
		}
	}
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91在线观看| 99久久久免费精品国产一区二区 | 亚洲成年人网站在线观看| 91老司机福利 在线| 亚洲免费观看在线观看| 91在线视频在线| 亚洲成人精品一区二区| 欧美二区三区91| 久久成人免费电影| 国产欧美一区二区三区网站| 国产一区二区按摩在线观看| 日本一二三四高清不卡| 91免费版在线| 男男视频亚洲欧美| 久久九九全国免费| 91免费版pro下载短视频| 午夜日韩在线电影| aaa欧美色吧激情视频| 日韩三级视频在线观看| 久久久久久一二三区| 国产成人精品影院| 亚洲欧洲精品天堂一级| 欧美在线观看视频在线| 日本最新不卡在线| 中文字幕巨乱亚洲| 在线观看中文字幕不卡| 久久精品国产久精国产| 国产精品传媒视频| 国产精品久久久久久久久免费相片| 99麻豆久久久国产精品免费| 亚洲一区在线看| 久久老女人爱爱| 欧美在线你懂得| 国产成人av电影在线播放| 一区二区三区精品在线| 精品国产乱码久久久久久闺蜜| 成人免费毛片片v| 日韩精品91亚洲二区在线观看| 久久蜜桃香蕉精品一区二区三区| 91蝌蚪porny九色| 成人一区二区三区中文字幕| 成人福利视频在线看| 午夜日韩在线电影| 国产精品视频一二| 欧美一区二区在线免费播放| 不卡一卡二卡三乱码免费网站| 日韩精品欧美精品| 亚洲女厕所小便bbb| 久久综合九色综合97婷婷| 欧美视频精品在线观看| 国产v综合v亚洲欧| 蜜桃av一区二区| 亚洲成在线观看| 中文字幕不卡在线| 久久婷婷国产综合国色天香| 91精品国产一区二区三区| 91视频国产资源| 欧美日韩一区二区欧美激情 | 国产欧美日韩视频在线观看| 欧美日韩精品一区二区三区| 99久久精品免费看国产| 国产一区二区三区综合| 裸体健美xxxx欧美裸体表演| 亚洲一线二线三线视频| 色婷婷综合久久久久中文一区二区| 久久国产剧场电影| 日本午夜一区二区| 亚洲国产欧美在线人成| 亚洲女同一区二区| 国产精品久久久久一区二区三区共 | 国产日产欧美一区| 日韩欧美亚洲国产另类| 欧美日本一区二区三区四区| 在线免费av一区| 91视频com| 91成人国产精品| 色婷婷精品久久二区二区蜜臀av| 波多野洁衣一区| 成人av网站在线观看| av激情成人网| 91色.com| 色婷婷综合久久久久中文| 色综合久久六月婷婷中文字幕| 成人的网站免费观看| 91美女在线视频| 一本色道久久综合亚洲aⅴ蜜桃| av电影在线观看完整版一区二区| 国产aⅴ精品一区二区三区色成熟| 国产最新精品免费| 国产精品白丝av| 国产91在线看| 97se亚洲国产综合自在线 | 精品一区二区三区香蕉蜜桃| 日本欧美在线看| 看国产成人h片视频| 国产综合色视频| 国产成人午夜精品影院观看视频| 成人一道本在线| 成人动漫一区二区在线| 在线欧美日韩精品| 欧美一区2区视频在线观看| 欧美xxxx在线观看| 国产精品欧美一级免费| 精品99一区二区| 亚洲人成在线播放网站岛国| 国产精品伦一区| 日韩中文字幕一区二区三区| 国产精品一区一区三区| 欧美怡红院视频| 中文在线免费一区三区高中清不卡| av中文一区二区三区| 欧美熟乱第一页| 日韩一区二区免费在线电影| 国产网站一区二区| 一区二区三区欧美亚洲| 日本大胆欧美人术艺术动态| 国产麻豆午夜三级精品| 色婷婷国产精品久久包臀| 欧美一区二区三区在线电影| 久久免费午夜影院| 亚洲人被黑人高潮完整版| 另类成人小视频在线| 色哟哟国产精品| 精品少妇一区二区三区日产乱码| 国产精品美女久久久久久久久久久 | 老司机午夜精品| 99re8在线精品视频免费播放| 7777精品伊人久久久大香线蕉经典版下载 | 五月婷婷另类国产| 国产自产2019最新不卡| 欧美午夜片在线观看| 国产亚洲综合在线| 亚洲福利一区二区三区| 成人午夜免费视频| 91精品国产欧美一区二区| 亚洲国产精品ⅴa在线观看| 日日摸夜夜添夜夜添国产精品| 成人久久久精品乱码一区二区三区| 欧美狂野另类xxxxoooo| 国产精品久久久久久久裸模| 麻豆精品久久精品色综合| 色狠狠一区二区| 国产精品三级久久久久三级| 蜜臀av一级做a爰片久久| 成人激情视频网站| xvideos.蜜桃一区二区| 午夜亚洲国产au精品一区二区| 成人app在线观看| 久久影视一区二区| 蜜桃视频免费观看一区| 欧美日韩一级二级三级| 亚洲欧美一区二区三区国产精品| 精品一区二区免费在线观看| 欧美巨大另类极品videosbest | 一区二区激情小说| av一区二区久久| 国产精品人人做人人爽人人添| 精品夜夜嗨av一区二区三区| 欧美精品国产精品| 亚洲一卡二卡三卡四卡 | 极品销魂美女一区二区三区| 欧美丝袜丝交足nylons图片| 亚洲免费在线视频| 成人app在线观看| av一区二区不卡| 亚洲综合一二三区| 亚洲午夜一区二区| 91在线观看高清| 国产精品国产精品国产专区不蜜 | 欧美国产日本视频| 国产一区二区不卡在线| 久久久久久久精| 国产精品伊人色| 国产欧美日韩综合精品一区二区| 国产乱一区二区| 国产亚洲一区二区三区四区 | 久久久久国产精品人| 国产一区二区三区免费播放| 精品国精品自拍自在线| 国产精品99久久久久久宅男| 国产日韩亚洲欧美综合| 波多野结衣在线一区| 亚洲视频一区在线| 欧美中文一区二区三区| 五月天亚洲婷婷| 日韩免费福利电影在线观看| 久久99久久99小草精品免视看| 精品毛片乱码1区2区3区| 国产一区二区看久久| 国产精品不卡一区| 日本韩国视频一区二区| 久久精品人人做人人综合| 精品国产第一区二区三区观看体验| 日韩精品电影在线| 久久久亚洲高清| 不卡av在线免费观看| 亚洲国产日韩在线一区模特| 日韩欧美国产综合| 成人午夜看片网址| 亚洲国产精品嫩草影院|