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


Java SpringManagedTransactionFactory类代码示例

本文整理汇总了Java中org.mybatis.spring.transaction.SpringManagedTransactionFactory的典型用法代码示例。如果您正苦于以下问题:Java SpringManagedTransactionFactory类的具体用法?Java SpringManagedTransactionFactory怎么用?Java SpringManagedTransactionFactory使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


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

示例1: testSetConfigLocation

import org.mybatis.spring.transaction.SpringManagedTransactionFactory; //导入依赖的package包/类
@Test
public void testSetConfigLocation() throws Exception {
  setupFactoryBean();

  factoryBean.setConfigLocation(new org.springframework.core.io.ClassPathResource(
      "org/mybatis/spring/mybatis-config.xml"));

  SqlSessionFactory factory = factoryBean.getObject();

  assertEquals(factory.getConfiguration().getEnvironment().getId(), SqlSessionFactoryBean.class.getSimpleName());
  assertSame(factory.getConfiguration().getEnvironment().getDataSource(), dataSource);
  assertSame(factory.getConfiguration().getEnvironment().getTransactionFactory().getClass(),
      org.mybatis.spring.transaction.SpringManagedTransactionFactory.class);

  // properties explicitly set differently than the defaults in the config xml
  assertFalse(factory.getConfiguration().isCacheEnabled());
  assertTrue(factory.getConfiguration().isUseGeneratedKeys());
  assertSame(factory.getConfiguration().getDefaultExecutorType(), org.apache.ibatis.session.ExecutorType.REUSE);

  // for each statement in the xml file: org.mybatis.spring.TestMapper.xxx & xxx
  assertEquals(8, factory.getConfiguration().getMappedStatementNames().size());

  assertEquals(0, factory.getConfiguration().getResultMapNames().size());
  assertEquals(0, factory.getConfiguration().getParameterMapNames().size());
}
 
开发者ID:lindzh,项目名称:mybatis-spring-1.2.2,代码行数:26,代码来源:SqlSessionFactoryBeanTest.java

示例2: testNullTransactionFactoryClass

import org.mybatis.spring.transaction.SpringManagedTransactionFactory; //导入依赖的package包/类
@Test
public void testNullTransactionFactoryClass() throws Exception {
  setupFactoryBean();
  factoryBean.setTransactionFactory(null);

  assertConfig(factoryBean.getObject(), SpringManagedTransactionFactory.class);
}
 
开发者ID:lindzh,项目名称:mybatis-spring-1.2.2,代码行数:8,代码来源:SqlSessionFactoryBeanTest.java

示例3: testEmptyStringEnvironment

import org.mybatis.spring.transaction.SpringManagedTransactionFactory; //导入依赖的package包/类
@Test
public void testEmptyStringEnvironment() throws Exception {
  setupFactoryBean();

  factoryBean.setEnvironment("");

  assertConfig(factoryBean.getObject(), "", org.mybatis.spring.transaction.SpringManagedTransactionFactory.class);
}
 
开发者ID:lindzh,项目名称:mybatis-spring-1.2.2,代码行数:9,代码来源:SqlSessionFactoryBeanTest.java

示例4: getSqlSession

import org.mybatis.spring.transaction.SpringManagedTransactionFactory; //导入依赖的package包/类
/**
 * Gets an SqlSession from Spring Transaction Manager or creates a new one if needed.
 * Tries to get a SqlSession out of current transaction. If there is not any, it creates a new one.
 * Then, it synchronizes the SqlSession with the transaction if Spring TX is active and
 * <code>SpringManagedTransactionFactory</code> is configured as a transaction manager.
 *
 * @param sessionFactory a MyBatis {@code SqlSessionFactory} to create new sessions
 * @param executorType The executor type of the SqlSession to create
 * @param exceptionTranslator Optional. Translates SqlSession.commit() exceptions to Spring exceptions.
 * @throws TransientDataAccessResourceException if a transaction is active and the
 *             {@code SqlSessionFactory} is not using a {@code SpringManagedTransactionFactory}
 * @see SpringManagedTransactionFactory
 */
public static SqlSession getSqlSession(SqlSessionFactory sessionFactory, ExecutorType executorType, PersistenceExceptionTranslator exceptionTranslator) {

  notNull(sessionFactory, "No SqlSessionFactory specified");
  notNull(executorType, "No ExecutorType specified");

  SqlSessionHolder holder = (SqlSessionHolder) TransactionSynchronizationManager.getResource(sessionFactory);

  if (holder != null && holder.isSynchronizedWithTransaction()) {
    if (holder.getExecutorType() != executorType) {
      throw new TransientDataAccessResourceException("Cannot change the ExecutorType when there is an existing transaction");
    }

    holder.requested();

    if (logger.isDebugEnabled()) {
      logger.debug("Fetched SqlSession [" + holder.getSqlSession() + "] from current transaction");
    }

    return holder.getSqlSession();
  }

  if (logger.isDebugEnabled()) {
    logger.debug("Creating a new SqlSession");
  }

  SqlSession session = sessionFactory.openSession(executorType);

  // Register session holder if synchronization is active (i.e. a Spring TX is active)
  //
  // Note: The DataSource used by the Environment should be synchronized with the
  // transaction either through DataSourceTxMgr or another tx synchronization.
  // Further assume that if an exception is thrown, whatever started the transaction will
  // handle closing / rolling back the Connection associated with the SqlSession.
  if (TransactionSynchronizationManager.isSynchronizationActive()) {
    Environment environment = sessionFactory.getConfiguration().getEnvironment();

    if (environment.getTransactionFactory() instanceof SpringManagedTransactionFactory) {
      if (logger.isDebugEnabled()) {
        logger.debug("Registering transaction synchronization for SqlSession [" + session + "]");
      }

      holder = new SqlSessionHolder(session, executorType, exceptionTranslator);
      TransactionSynchronizationManager.bindResource(sessionFactory, holder);
      TransactionSynchronizationManager.registerSynchronization(new SqlSessionSynchronization(holder, sessionFactory));
      holder.setSynchronizedWithTransaction(true);
      holder.requested();
    } else {
      if (TransactionSynchronizationManager.getResource(environment.getDataSource()) == null) {
        if (logger.isDebugEnabled()) {
          logger.debug("SqlSession [" + session + "] was not registered for synchronization because DataSource is not transactional");
        }
      } else {
        throw new TransientDataAccessResourceException(
            "SqlSessionFactory must be using a SpringManagedTransactionFactory in order to use Spring transaction synchronization");
      }
    }
  } else {
    if (logger.isDebugEnabled()) {
      logger.debug("SqlSession [" + session + "] was not registered for synchronization because synchronization is not active");
    }
  }

  return session;
}
 
开发者ID:lindzh,项目名称:mybatis-spring-1.2.2,代码行数:78,代码来源:SqlSessionUtils.java

示例5: assertDefaultConfig

import org.mybatis.spring.transaction.SpringManagedTransactionFactory; //导入依赖的package包/类
private void assertDefaultConfig(SqlSessionFactory factory) {
  assertConfig(factory, SqlSessionFactoryBean.class.getSimpleName(),
      org.mybatis.spring.transaction.SpringManagedTransactionFactory.class);
}
 
开发者ID:lindzh,项目名称:mybatis-spring-1.2.2,代码行数:5,代码来源:SqlSessionFactoryBeanTest.java

示例6: getSqlSession

import org.mybatis.spring.transaction.SpringManagedTransactionFactory; //导入依赖的package包/类
/**
 * Gets an SqlSession from Spring Transaction Manager or creates a new one if needed.
 * Tries to get a SqlSession out of current transaction. If there is not any, it creates a new one.
 * Then, it synchronizes the SqlSession with the transaction if Spring TX is active and
 * <code>SpringManagedTransactionFactory</code> is configured as a transaction manager.
 *
 * @param sessionFactory a MyBatis {@code SqlSessionFactory} to create new sessions
 * @param executorType The executor type of the SqlSession to create
 * @param exceptionTranslator Optional. Translates SqlSession.commit() exceptions to Spring exceptions.
 * @throws TransientDataAccessResourceException if a transaction is active and the
 *             {@code SqlSessionFactory} is not using a {@code SpringManagedTransactionFactory}
 * @see SpringManagedTransactionFactory
 */
public static SqlSession getSqlSession(SqlSessionFactory sessionFactory, ExecutorType executorType, PersistenceExceptionTranslator exceptionTranslator) {

  notNull(sessionFactory, "No SqlSessionFactory specified");
  notNull(executorType, "No ExecutorType specified");

  SqlSessionHolder holder = (SqlSessionHolder) getResource(sessionFactory);

  if (holder != null && holder.isSynchronizedWithTransaction()) {
    if (holder.getExecutorType() != executorType) {
      throw new TransientDataAccessResourceException("Cannot change the ExecutorType when there is an existing transaction");
    }

    holder.requested();

    if (logger.isDebugEnabled()) {
      logger.debug("Fetched SqlSession [" + holder.getSqlSession() + "] from current transaction");
    }

    return holder.getSqlSession();
  }

  if (logger.isDebugEnabled()) {
    logger.debug("Creating a new SqlSession");
  }

  SqlSession session = sessionFactory.openSession(executorType);

  // Register session holder if synchronization is active (i.e. a Spring TX is active)
  //
  // Note: The DataSource used by the Environment should be synchronized with the
  // transaction either through DataSourceTxMgr or another tx synchronization.
  // Further assume that if an exception is thrown, whatever started the transaction will
  // handle closing / rolling back the Connection associated with the SqlSession.
  if (isSynchronizationActive()) {
    Environment environment = sessionFactory.getConfiguration().getEnvironment();

    if (environment.getTransactionFactory() instanceof SpringManagedTransactionFactory) {
      if (logger.isDebugEnabled()) {
        logger.debug("Registering transaction synchronization for SqlSession [" + session + "]");
      }

      holder = new SqlSessionHolder(session, executorType, exceptionTranslator);
      bindResource(sessionFactory, holder);
      registerSynchronization(new SqlSessionSynchronization(holder, sessionFactory));
      holder.setSynchronizedWithTransaction(true);
      holder.requested();
    } else {
      if (getResource(environment.getDataSource()) == null) {
        if (logger.isDebugEnabled()) {
          logger.debug("SqlSession [" + session + "] was not registered for synchronization because DataSource is not transactional");
        }
      } else {
        throw new TransientDataAccessResourceException(
            "SqlSessionFactory must be using a SpringManagedTransactionFactory in order to use Spring transaction synchronization");
      }
    }
  } else {
    if (logger.isDebugEnabled()) {
      logger.debug("SqlSession [" + session + "] was not registered for synchronization because synchronization is not active");
    }
  }

  return session;
}
 
开发者ID:moishalo,项目名称:MybatisSpring2.5.X,代码行数:78,代码来源:SqlSessionUtils.java


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