diff --git a/src/main/java/com/samskivert/depot/PersistenceContext.java b/src/main/java/com/samskivert/depot/PersistenceContext.java index 8e10b59..a18547b 100644 --- a/src/main/java/com/samskivert/depot/PersistenceContext.java +++ b/src/main/java/com/samskivert/depot/PersistenceContext.java @@ -216,6 +216,21 @@ public class PersistenceContext } } + /** + * Starts a transaction bound to this persistence context. You must eventually call + * {@link Transaction#commit} or {@link Transaction#rollback} on the returned transaction. Also + * no other database operations may be performed on other persitence contexts, on the calling + * thread, until this transaction is complete. + */ + public Transaction startTx () + { + Transaction tx = Transaction.get(); + if (tx != null) throw new DatabaseException("Nested transactions not supported."); + tx = new Transaction(this); + Transaction._activeTx.set(tx); + return tx; + } + /** * Returns a snapshot of our current runtime statistics. */ diff --git a/src/main/java/com/samskivert/depot/Transaction.java b/src/main/java/com/samskivert/depot/Transaction.java index 38ffadb..ac0af23 100644 --- a/src/main/java/com/samskivert/depot/Transaction.java +++ b/src/main/java/com/samskivert/depot/Transaction.java @@ -47,19 +47,6 @@ import java.sql.SQLException; */ public class Transaction { - /** - * Starts a transaction using the supplied persistence context. You must eventually - * call {@link #commit} or {@link #rollback} on the returned transaction. - */ - public static Transaction start (PersistenceContext ctx) - { - Transaction tx = get(); - if (tx != null) throw new DatabaseException("Nested transactions not supported."); - tx = new Transaction(ctx); - _activeTx.set(tx); - return tx; - } - /** * Returns the currently active transaction (on the caller's thread), or null. */ @@ -82,7 +69,7 @@ public class Transaction { */ public static void perform (PersistenceContext ctx, Runnable op) { - Transaction tx = start(ctx); + Transaction tx = ctx.startTx(); try { op.run(); tx.commit(); diff --git a/src/test/java/com/samskivert/depot/TransactionTest.java b/src/test/java/com/samskivert/depot/TransactionTest.java index 6d3deed..c5ee77f 100644 --- a/src/test/java/com/samskivert/depot/TransactionTest.java +++ b/src/test/java/com/samskivert/depot/TransactionTest.java @@ -10,7 +10,7 @@ import static org.junit.Assert.*; public class TransactionTest extends TestBase { @Test public void testSuccessfulCommit () { - Transaction tx = Transaction.start(_repo.ctx()); + Transaction tx = _repo.ctx().startTx(); TestRecord in = createTestRecord(1); _repo.insert(in); tx.commit(); @@ -28,7 +28,7 @@ public class TransactionTest extends TestBase } @Test public void testRollback () { - Transaction tx = Transaction.start(_repo.ctx()); + Transaction tx = _repo.ctx().startTx(); TestRecord in1 = createTestRecord(1); _repo.insert(in1); TestRecord in2 = createTestRecord(2);