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

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

?? toplinktransactionmanager.java

?? spring framework 2.5.4源代碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號(hào):

	public void afterPropertiesSet() {
		if (getSessionFactory() == null) {
			throw new IllegalArgumentException("Property 'sessionFactory' is required");
		}
	}


	public Object getResourceFactory() {
		return getSessionFactory();
	}

	protected Object doGetTransaction() {
		TopLinkTransactionObject txObject = new TopLinkTransactionObject();
		SessionHolder sessionHolder = (SessionHolder)
				TransactionSynchronizationManager.getResource(this.sessionFactory);
		txObject.setSessionHolder(sessionHolder);
		return txObject;
	}

	protected boolean isExistingTransaction(Object transaction) {
		TopLinkTransactionObject txObject = (TopLinkTransactionObject) transaction;
		return (txObject.getSessionHolder() != null);
	}

	protected void doBegin(Object transaction, TransactionDefinition definition) {
		Session session = null;

		try {
			if (!definition.isReadOnly()) {
				logger.debug("Creating managed TopLink Session with active UnitOfWork for read-write transaction");
				session = getSessionFactory().createManagedClientSession();
			}
			else {
				logger.debug("Creating plain TopLink Session without active UnitOfWork for read-only transaction");
				session = getSessionFactory().createSession();
			}

			if (logger.isDebugEnabled()) {
				logger.debug("Opened new session [" + session + "] for TopLink transaction");
			}

			TopLinkTransactionObject txObject = (TopLinkTransactionObject) transaction;
			txObject.setSessionHolder(new SessionHolder(session));
			txObject.getSessionHolder().setSynchronizedWithTransaction(true);

			// Register transaction timeout.
			int timeout = determineTimeout(definition);
			if (timeout != TransactionDefinition.TIMEOUT_DEFAULT) {
				txObject.getSessionHolder().setTimeoutInSeconds(timeout);
			}

			// Enforce early database transaction for TopLink read-write transaction,
			// unless we are explicitly told to use lazy transactions.
			if (!definition.isReadOnly() && !isLazyDatabaseTransaction()) {
				session.getActiveUnitOfWork().beginEarlyTransaction();
			}

			// Register the TopLink Session's JDBC Connection for the DataSource, if set.
			if (getDataSource() != null) {
				Session mostSpecificSession = (!definition.isReadOnly() ? session.getActiveUnitOfWork() : session);
				Connection con = getJdbcConnection(mostSpecificSession);
				if (con != null) {
					ConnectionHolder conHolder = new ConnectionHolder(con);
					if (timeout != TransactionDefinition.TIMEOUT_DEFAULT) {
						conHolder.setTimeoutInSeconds(timeout);
					}
					if (logger.isDebugEnabled()) {
						logger.debug("Exposing TopLink transaction as JDBC transaction [" + con + "]");
					}
					TransactionSynchronizationManager.bindResource(getDataSource(), conHolder);
					txObject.setConnectionHolder(conHolder);
				}
				else {
					if (logger.isDebugEnabled()) {
						logger.debug("Not exposing TopLink transaction [" + session +
								"] as JDBC transaction because no JDBC Connection could be retrieved from it");
					}
				}
			}

			// Bind the session holder to the thread.
			TransactionSynchronizationManager.bindResource(getSessionFactory(), txObject.getSessionHolder());
		}

		catch (Exception ex) {
			SessionFactoryUtils.releaseSession(session, getSessionFactory());
			throw new CannotCreateTransactionException("Could not open TopLink Session for transaction", ex);
		}
	}

	/**
	 * Extract the underlying JDBC Connection from the given TopLink Session.
	 * <p>Default implementation casts to <code>oracle.toplink.publicinterface.Session</code>
	 * and fetches the Connection from the DatabaseAccessor exposed there.
	 * @param session the current TopLink Session
	 * @return the underlying JDBC Connection, or <code>null</code> if none found
	 * @see oracle.toplink.publicinterface.Session#getAccessor()
	 * @see oracle.toplink.internal.databaseaccess.DatabaseAccessor#getConnection()
	 */
	protected Connection getJdbcConnection(Session session) {
		if (!(session instanceof oracle.toplink.publicinterface.Session)) {
			if (logger.isDebugEnabled()) {
				logger.debug("TopLink Session [" + session +
						"] does not derive from [oracle.toplink.publicinterface.Session]");
			}
			return null;
		}
		Accessor accessor = ((oracle.toplink.publicinterface.Session) session).getAccessor();
		if (!(accessor instanceof DatabaseAccessor)) {
			if (logger.isDebugEnabled()) {
				logger.debug("TopLink Accessor [" + accessor +
						"] does not derive from [oracle.toplink.internal.databaseaccess.DatabaseAccessor]");
			}
			return null;
		}
		return ((DatabaseAccessor) accessor).getConnection();
	}

	protected Object doSuspend(Object transaction) {
		TopLinkTransactionObject txObject = (TopLinkTransactionObject) transaction;
		txObject.setSessionHolder(null);
		return TransactionSynchronizationManager.unbindResource(getSessionFactory());
	}

	protected void doResume(Object transaction, Object suspendedResources) {
		SessionHolder sessionHolder = (SessionHolder) suspendedResources;
		if (TransactionSynchronizationManager.hasResource(getSessionFactory())) {
			// From non-transactional code running in active transaction synchronization
			// -> can be safely removed, will be closed on transaction completion.
			TransactionSynchronizationManager.unbindResource(getSessionFactory());
		}
		TransactionSynchronizationManager.bindResource(getSessionFactory(), sessionHolder);
	}

	protected void doCommit(DefaultTransactionStatus status) {
		TopLinkTransactionObject txObject = (TopLinkTransactionObject) status.getTransaction();
		if (status.isDebug()) {
			logger.debug("Committing TopLink transaction on session [" +
					txObject.getSessionHolder().getSession() + "]");
		}
		try {
			if (!status.isReadOnly()) {
				txObject.getSessionHolder().getSession().getActiveUnitOfWork().commit();
			}
			txObject.getSessionHolder().clear();
		}
		catch (TopLinkException ex) {
			throw convertTopLinkAccessException(ex);
		}
	}

	protected void doRollback(DefaultTransactionStatus status) {
		TopLinkTransactionObject txObject = (TopLinkTransactionObject) status.getTransaction();
		if (status.isDebug()) {
			logger.debug("Not committing TopLink transaction on session [" +
					txObject.getSessionHolder().getSession() + "]");
		}
		txObject.getSessionHolder().clear();
	}

	protected void doSetRollbackOnly(DefaultTransactionStatus status) {
		TopLinkTransactionObject txObject = (TopLinkTransactionObject) status.getTransaction();
		if (status.isDebug()) {
			logger.debug("Setting TopLink transaction on session [" +
					txObject.getSessionHolder().getSession() + "] rollback-only");
		}
		txObject.getSessionHolder().setRollbackOnly();
	}

	protected void doCleanupAfterCompletion(Object transaction) {
		TopLinkTransactionObject txObject = (TopLinkTransactionObject) transaction;

		// Remove the session holder from the thread.
		TransactionSynchronizationManager.unbindResource(getSessionFactory());

		// Remove the JDBC connection holder from the thread, if exposed.
		if (txObject.hasConnectionHolder()) {
			TransactionSynchronizationManager.unbindResource(getDataSource());
		}

		Session session = txObject.getSessionHolder().getSession();
		if (logger.isDebugEnabled()) {
			logger.debug("Releasing TopLink Session [" + session + "] after transaction");
		}
		try {
			session.release();
		}
		catch (Throwable ex) {
			// just log it, to keep a transaction-related exception
			logger.debug("Could not release TopLink Session after transaction", ex);
		}
	}

	/**
	 * Convert the given TopLinkException to an appropriate exception from the
	 * <code>org.springframework.dao</code> hierarchy.
	 * <p>Will automatically apply a specified SQLExceptionTranslator to a
	 * TopLink DatabaseException, else rely on TopLink's default translation.
	 * @param ex TopLinkException that occured
	 * @return a corresponding DataAccessException
	 * @see SessionFactoryUtils#convertTopLinkAccessException
	 * @see #setJdbcExceptionTranslator
	 */
	protected DataAccessException convertTopLinkAccessException(TopLinkException ex) {
		if (getJdbcExceptionTranslator() != null && ex instanceof DatabaseException) {
			Throwable internalEx = ex.getInternalException();
			// Should always be a SQLException inside a DatabaseException.
			if (internalEx instanceof SQLException) {
				return getJdbcExceptionTranslator().translate(
						"TopLink commit: " + ex.getMessage(), null, (SQLException) internalEx);
			}
		}
		return SessionFactoryUtils.convertTopLinkAccessException(ex);
	}


	/**
	 * TopLink transaction object, representing a SessionHolder.
	 * Used as transaction object by TopLinkTransactionManager.
	 */
	private static class TopLinkTransactionObject extends JdbcTransactionObjectSupport {

		private SessionHolder sessionHolder;

		public void setSessionHolder(SessionHolder sessionHolder) {
			this.sessionHolder = sessionHolder;
		}

		public SessionHolder getSessionHolder() {
			return this.sessionHolder;
		}

		public boolean isRollbackOnly() {
			return getSessionHolder().isRollbackOnly();
		}
	}

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美区一区二区三区| 男女激情视频一区| 99re66热这里只有精品3直播 | 亚洲少妇30p| aa级大片欧美| 亚洲最新视频在线播放| 欧美日韩综合一区| 男女男精品网站| 久久久激情视频| 成人福利视频网站| 一二三四区精品视频| 欧美日本一道本在线视频| 欧美aaaaaa午夜精品| 久久日韩精品一区二区五区| 国产成人综合自拍| 亚洲在线成人精品| 精品欧美乱码久久久久久| 国产精品一二三四区| 一本大道久久a久久综合| 精品成a人在线观看| 老司机午夜精品99久久| a亚洲天堂av| 一区二区欧美视频| 国产精品一区二区在线播放 | 欧美在线观看你懂的| 国产精品久久一卡二卡| 国产精品综合视频| 精品日韩一区二区| 日韩福利电影在线| 欧美美女喷水视频| 亚洲成人激情社区| 欧美日本国产一区| 日产国产欧美视频一区精品| 91精品国产综合久久久久久漫画 | 午夜在线电影亚洲一区| aaa欧美日韩| 亚洲欧美视频在线观看视频| 97超碰欧美中文字幕| 亚洲免费av在线| 欧美伊人久久久久久午夜久久久久| 亚洲欧美激情小说另类| 色综合久久综合网欧美综合网| 亚洲精品国产成人久久av盗摄| 色狠狠色狠狠综合| 亚洲午夜久久久久久久久电影院| 91毛片在线观看| 亚洲永久精品大片| 亚洲va中文字幕| 成人av在线资源网站| 中文幕一区二区三区久久蜜桃| 不卡的av中国片| 成人欧美一区二区三区| 欧美体内she精视频| 夜夜精品视频一区二区 | 蜜芽一区二区三区| 日韩欧美成人一区| 国产一区二区三区| 国产精品高潮久久久久无| av中文一区二区三区| 五月婷婷综合在线| 欧美群妇大交群中文字幕| 精品一区二区三区久久| 亚洲精品一区二区三区四区高清| 国产成人综合自拍| 国产精品久久午夜夜伦鲁鲁| 大尺度一区二区| 亚洲靠逼com| 日本道精品一区二区三区| 秋霞午夜鲁丝一区二区老狼| 欧美一级高清片在线观看| 成人v精品蜜桃久久一区| 亚洲精品一二三区| 精品国产乱码久久久久久浪潮| 国产精品一品视频| 亚洲一二三四在线观看| 日韩一二三四区| 91年精品国产| 免费成人美女在线观看.| ㊣最新国产の精品bt伙计久久| 在线亚洲免费视频| 国产成人99久久亚洲综合精品| 亚洲色图欧美在线| 精品国产免费人成在线观看| 国产成a人亚洲精| 午夜精品福利一区二区三区蜜桃| 精品国产三级a在线观看| 国产在线播放一区| 石原莉奈在线亚洲二区| 久久精品亚洲麻豆av一区二区| 97久久超碰精品国产| 亚洲一区二区三区美女| 欧美精品一区二区三区高清aⅴ| av一本久道久久综合久久鬼色| 亚洲一区二区三区四区五区黄| 久久综合九色综合97婷婷| 欧美色精品天天在线观看视频| 蜜臀av性久久久久蜜臀av麻豆| 亚洲欧洲国产专区| 精品久久一区二区| 7777精品伊人久久久大香线蕉| 成人一区二区三区视频在线观看 | 久久成人综合网| 国产视频在线观看一区二区三区| 91精品国产综合久久香蕉的特点| av电影在线观看不卡 | 亚洲自拍与偷拍| 国产精品网站在线| 欧美一区二区视频网站| 欧美少妇性性性| 色综合视频在线观看| 91麻豆自制传媒国产之光| 国产成人综合亚洲91猫咪| 精品中文字幕一区二区| 日本午夜精品一区二区三区电影| 亚洲一区二区三区爽爽爽爽爽| 中文字幕电影一区| 日本一区二区高清| 久久综合给合久久狠狠狠97色69| 日韩女优毛片在线| 欧美日韩国产精品成人| 欧美久久高跟鞋激| 欧美羞羞免费网站| 欧美精品少妇一区二区三区| 91高清视频免费看| 欧美色图在线观看| 色婷婷av久久久久久久| 欧美亚洲国产怡红院影院| 色香蕉久久蜜桃| 欧美三级日韩三级国产三级| 91国产成人在线| 欧美日韩黄色一区二区| 欧美少妇性性性| 欧美一区二区视频网站| 欧美一区二区播放| 久久这里只有精品首页| 精品国产免费人成在线观看| 久久精品视频免费观看| 国产日韩v精品一区二区| 亚洲欧美另类小说视频| 国产精品美女久久久久aⅴ| 国产精品区一区二区三区| 国产免费观看久久| 国产精品久久久久毛片软件| 国产精品天天摸av网| 亚洲男人天堂一区| 亚洲一区二区三区激情| 久久91精品国产91久久小草| 国产传媒欧美日韩成人| 欧美伊人精品成人久久综合97| 在线亚洲欧美专区二区| 337p日本欧洲亚洲大胆色噜噜| 国产精品国产精品国产专区不片| 成人欧美一区二区三区黑人麻豆| 石原莉奈一区二区三区在线观看| 婷婷国产v国产偷v亚洲高清| 国内精品嫩模私拍在线| 暴力调教一区二区三区| 欧美一区二区三区四区五区| 久久久不卡影院| 石原莉奈在线亚洲二区| 国产又粗又猛又爽又黄91精品| 色狠狠色噜噜噜综合网| 日韩一区二区影院| 亚洲精品老司机| 蜜桃传媒麻豆第一区在线观看| eeuss鲁片一区二区三区在线看| 精品视频资源站| 国产精品麻豆久久久| 日韩精品福利网| 成人爽a毛片一区二区免费| 色悠悠久久综合| 国产亚洲成av人在线观看导航| 亚洲欧美日韩人成在线播放| 国产激情91久久精品导航| 成人一二三区视频| 精品999在线播放| 国产日韩v精品一区二区| 婷婷久久综合九色综合绿巨人| 从欧美一区二区三区| 337p亚洲精品色噜噜噜| 国产欧美日韩中文久久| 丝瓜av网站精品一区二区| 99久久精品国产精品久久| 欧美一区二区在线免费播放 | 久久久久9999亚洲精品| 亚洲国产视频网站| 99re亚洲国产精品| 久久久久久久av麻豆果冻| 国内精品第一页| 欧美人动与zoxxxx乱| 亚洲综合区在线| 精品午夜久久福利影院| 成人精品视频网站| 精品国产第一区二区三区观看体验 | 亚洲天天做日日做天天谢日日欢| 蜜桃在线一区二区三区| 欧美一区二区三区影视| 亚洲欧洲一区二区在线播放| 成人在线视频首页| 国产精品国产三级国产专播品爱网 |