List of usage examples for org.springframework.transaction.jta JtaTransactionManager getTransaction
@Override public final TransactionStatus getTransaction(@Nullable TransactionDefinition definition) throws TransactionException
From source file:org.mybatis.spring.MyBatisSpringTest.java
@Test public void testWithJtaTxManager() { JtaTransactionManager jtaManager = new JtaTransactionManager(new MockUserTransaction()); DefaultTransactionDefinition txDef = new DefaultTransactionDefinition(); txDef.setPropagationBehaviorName("PROPAGATION_REQUIRED"); TransactionStatus status = jtaManager.getTransaction(txDef); session = SqlSessionUtils.getSqlSession(sqlSessionFactory); session.getMapper(TestMapper.class).findTest(); SqlSessionUtils.closeSqlSession(session, sqlSessionFactory); jtaManager.commit(status);// w ww . j a v a2 s. co m // assume a real JTA tx would enlist and commit the JDBC connection assertNoCommitJdbc(); assertCommitSession(); assertSingleConnection(); }
From source file:org.mybatis.spring.MyBatisSpringTest.java
@Test public void testWithJtaTxManagerAndNonSpringTxManager() throws java.sql.SQLException { Environment original = sqlSessionFactory.getConfiguration().getEnvironment(); MockDataSource mockDataSource = new MockDataSource(); mockDataSource.setupConnection(createMockConnection()); Environment nonSpring = new Environment("non-spring", new ManagedTransactionFactory(), mockDataSource); sqlSessionFactory.getConfiguration().setEnvironment(nonSpring); JtaTransactionManager jtaManager = new JtaTransactionManager(new MockUserTransaction()); DefaultTransactionDefinition txDef = new DefaultTransactionDefinition(); txDef.setPropagationBehaviorName("PROPAGATION_REQUIRED"); TransactionStatus status = jtaManager.getTransaction(txDef); try {//from ww w . j a va 2s .c om session = SqlSessionUtils.getSqlSession(sqlSessionFactory); session.getMapper(TestMapper.class).findTest(); // Spring is not managing SqlSession, so commit is needed session.commit(true); SqlSessionUtils.closeSqlSession(session, sqlSessionFactory); jtaManager.commit(status); // assume a real JTA tx would enlist and commit the JDBC connection assertNoCommitJdbc(); assertCommitSession(); MockConnection mockConnection = (MockConnection) mockDataSource.getConnection(); assertEquals("should call commit on Connection", 0, mockConnection.getNumberCommits()); assertEquals("should not call rollback on Connection", 0, mockConnection.getNumberRollbacks()); assertEquals("should not call DataSource.getConnection()", 0, dataSource.getConnectionCount()); } finally { SqlSessionUtils.closeSqlSession(session, sqlSessionFactory); sqlSessionFactory.getConfiguration().setEnvironment(original); // null the connection since it was not used // this avoids failing in validateConnectionClosed() connection = null; } }