diff --git a/src/main/java/com/avaje/ebean/Transaction.java b/src/main/java/com/avaje/ebean/Transaction.java index 440d84346..d7440ed3a 100644 --- a/src/main/java/com/avaje/ebean/Transaction.java +++ b/src/main/java/com/avaje/ebean/Transaction.java @@ -3,12 +3,13 @@ package com.avaje.ebean; import javax.persistence.OptimisticLockException; import javax.persistence.PersistenceException; import javax.persistence.RollbackException; +import java.io.Closeable; import java.sql.Connection; /** * The Transaction object. Typically representing a JDBC or JTA transaction. */ -public interface Transaction { +public interface Transaction extends Closeable { /** * Read Committed transaction isolation. Same as diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/JdbcTransaction.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/JdbcTransaction.java index 7ad750f5a..5213554ed 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/transaction/JdbcTransaction.java +++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/JdbcTransaction.java @@ -1,5 +1,6 @@ package com.avaje.ebeaninternal.server.transaction; +import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayList; @@ -687,4 +688,15 @@ public class JdbcTransaction implements SpiTransaction { public final TransactionManager getTransactionManger() { return manager; } + + /** + * Alias for end(), which enables this class to be used in try-with-resources. + */ + public void close() throws IOException { + try { + end(); + } catch (PersistenceException ex) { + throw new IOException(ex); + } + } } diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/JtaTransaction.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/JtaTransaction.java index f39a9483a..6947734ee 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/transaction/JtaTransaction.java +++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/JtaTransaction.java @@ -95,7 +95,7 @@ public class JtaTransaction extends JdbcTransaction { } notifyRollback(e); } finally { - close(); + closeConnection(); } } catch (Exception ex) { throw new PersistenceException(ex); @@ -107,7 +107,7 @@ public class JtaTransaction extends JdbcTransaction { /** * Close the underlying connection. */ - private void close() throws SQLException { + private void closeConnection() throws SQLException { if (connection != null) { connection.close(); connection = null;