You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by cb...@apache.org on 2010/01/23 21:43:09 UTC
svn commit: r902485 - in /ibatis/java/ibatis-3/trunk/ibatis-3-core/src:
main/java/org/apache/ibatis/session/
main/java/org/apache/ibatis/session/defaults/
test/java/org/apache/ibatis/session/
Author: cbegin
Date: Sat Jan 23 20:43:08 2010
New Revision: 902485
URL: http://svn.apache.org/viewvc?rev=902485&view=rev
Log:
added transaction isolation level support to sqlsessionfactory
Added:
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/TransactionIsolationLevel.java
Modified:
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSessionFactory.java
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSessionFactory.java
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSessionFactory.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSessionFactory.java?rev=902485&r1=902484&r2=902485&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSessionFactory.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSessionFactory.java Sat Jan 23 20:43:08 2010
@@ -7,13 +7,12 @@
SqlSession openSession();
SqlSession openSession(boolean autoCommit);
-
SqlSession openSession(Connection connection);
+ SqlSession openSession(TransactionIsolationLevel level);
SqlSession openSession(ExecutorType execType);
-
SqlSession openSession(ExecutorType execType, boolean autoCommit);
-
+ SqlSession openSession(ExecutorType execType, TransactionIsolationLevel level);
SqlSession openSession(ExecutorType execType, Connection connection);
Configuration getConfiguration();
Added: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/TransactionIsolationLevel.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/TransactionIsolationLevel.java?rev=902485&view=auto
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/TransactionIsolationLevel.java (added)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/TransactionIsolationLevel.java Sat Jan 23 20:43:08 2010
@@ -0,0 +1,21 @@
+package org.apache.ibatis.session;
+
+import java.sql.Connection;
+
+public enum TransactionIsolationLevel {
+ NONE(Connection.TRANSACTION_NONE),
+ READ_COMMITTED(Connection.TRANSACTION_READ_COMMITTED),
+ READ_UNCOMMITTED(Connection.TRANSACTION_READ_UNCOMMITTED),
+ REPEATABLE_READ(Connection.TRANSACTION_REPEATABLE_READ),
+ SERIALIZABLE(Connection.TRANSACTION_SERIALIZABLE);
+
+ private final int level;
+
+ private TransactionIsolationLevel(int level) {
+ this.level = level;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+}
Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSessionFactory.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSessionFactory.java?rev=902485&r1=902484&r2=902485&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSessionFactory.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSessionFactory.java Sat Jan 23 20:43:08 2010
@@ -29,23 +29,50 @@
}
public SqlSession openSession() {
- return openSession(configuration.getDefaultExecutorType(), false);
+ return openSessionFromDataSource(configuration.getDefaultExecutorType(), null, false);
}
public SqlSession openSession(boolean autoCommit) {
- return openSession(configuration.getDefaultExecutorType(), autoCommit);
+ return openSessionFromDataSource(configuration.getDefaultExecutorType(), null, autoCommit);
}
public SqlSession openSession(ExecutorType execType) {
- return openSession(execType, false);
+ return openSessionFromDataSource(execType, null, false);
+ }
+
+ public SqlSession openSession(TransactionIsolationLevel level) {
+ return openSessionFromDataSource(configuration.getDefaultExecutorType(), level, false);
+ }
+
+ public SqlSession openSession(ExecutorType execType, TransactionIsolationLevel level) {
+ return openSessionFromDataSource(execType, level, false);
}
public SqlSession openSession(ExecutorType execType, boolean autoCommit) {
+ return openSessionFromDataSource(execType, null, autoCommit);
+ }
+
+ public SqlSession openSession(Connection connection) {
+ return openSessionFromConnection(configuration.getDefaultExecutorType(), connection);
+ }
+
+ public SqlSession openSession(ExecutorType execType, Connection connection) {
+ return openSessionFromConnection(execType, connection);
+ }
+
+ public Configuration getConfiguration() {
+ return configuration;
+ }
+
+ private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit) {
try {
final Environment environment = configuration.getEnvironment();
final DataSource dataSource = getDataSourceFromEnvironment(environment);
TransactionFactory transactionFactory = getTransactionFactoryFromEnvironment(environment);
Connection connection = dataSource.getConnection();
+ if (level != null) {
+ connection.setTransactionIsolation(level.getLevel());
+ }
connection = wrapConnection(connection);
Transaction tx = transactionFactory.newTransaction(connection, autoCommit);
Executor executor = configuration.newExecutor(tx, execType);
@@ -57,25 +84,7 @@
}
}
- private DataSource getDataSourceFromEnvironment(Environment environment) {
- if (environment == null || environment.getDataSource() == null) {
- throw new SessionException("Configuration does not include an environment with a DataSource, so session cannot be created unless a connection is passed in.");
- }
- return environment.getDataSource();
- }
-
- private TransactionFactory getTransactionFactoryFromEnvironment(Environment environment) {
- if (environment == null || environment.getTransactionFactory() == null) {
- return managedTransactionFactory;
- }
- return environment.getTransactionFactory();
- }
-
- public SqlSession openSession(Connection connection) {
- return openSession(configuration.getDefaultExecutorType(), connection);
- }
-
- public SqlSession openSession(ExecutorType execType, Connection connection) {
+ private SqlSession openSessionFromConnection(ExecutorType execType, Connection connection) {
try {
boolean autoCommit;
try {
@@ -98,8 +107,18 @@
}
}
- public Configuration getConfiguration() {
- return configuration;
+ private DataSource getDataSourceFromEnvironment(Environment environment) {
+ if (environment == null || environment.getDataSource() == null) {
+ throw new SessionException("Configuration does not include an environment with a DataSource, so session cannot be created unless a connection is passed in.");
+ }
+ return environment.getDataSource();
+ }
+
+ private TransactionFactory getTransactionFactoryFromEnvironment(Environment environment) {
+ if (environment == null || environment.getTransactionFactory() == null) {
+ return managedTransactionFactory;
+ }
+ return environment.getTransactionFactory();
}
private Connection wrapConnection(Connection connection) {
Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java?rev=902485&r1=902484&r2=902485&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java Sat Jan 23 20:43:08 2010
@@ -28,7 +28,7 @@
@Test
public void shouldSelectAllAuthors() throws Exception {
- SqlSession session = sqlMapper.openSession();
+ SqlSession session = sqlMapper.openSession(TransactionIsolationLevel.SERIALIZABLE);
try {
List<Author> authors = session.selectList("domain.blog.mappers.AuthorMapper.selectAllAuthors");
assertEquals(2, authors.size());