Package rife.database

Class DbTransactionUser<ResultType,DataType>

java.lang.Object
rife.database.DbTransactionUser<ResultType,DataType>
All Implemented Interfaces:
Cloneable, TransactionUser<ResultType>
Direct Known Subclasses:
DbTransactionUserWithoutResult

public abstract class DbTransactionUser<ResultType,DataType> extends Object implements Cloneable, TransactionUser<ResultType>
By extending this class it's possible to provide the logic that should be executed by the inTransaction method in the DbQueryManager class.

This class has both a default constructor and one that can take a data object. This can be handy when using it as an extending anonymous inner class when you need to use variables inside the inner class that are cumbersome to change to final in the enclosing class.

Since:
1.0
See Also:
  • Field Details

  • Constructor Details

    • DbTransactionUser

      public DbTransactionUser()
    • DbTransactionUser

      public DbTransactionUser(DataType data)
  • Method Details

    • getData

      public DataType getData()
    • getTransactionIsolation

      public int getTransactionIsolation()
      Should be overridden if the transaction has to be executed in another isolation level.
      Returns:
      -1 when the active isolation level should be preserved; or

      a level constant from Connection if the isolation needs to be changed.

      Since:
      1.0
    • rollback

      public void rollback() throws RollbackException
      Should be used to roll back ongoing transactions, otherwise enclosing transaction users might not be interrupted and subsequent modification can still happen outside the transaction.
      Throws:
      RollbackException - indicates that a rollback should happen and all further transaction logic interrupted.
      Since:
      1.0
    • throwException

      public void throwException(Exception exception) throws InnerClassException
      Calling this method makes it possible to throw a checked exception from within this class.

      To catch it you should surround the inTransaction with a try-catch block that catching InnerClassException. The original exception is then available through getCause() and can for example be rethrown.

      Throws:
      InnerClassException - when a checked exception needs to be thrown from within this class and caught outside the caller.
      Since:
      1.0
    • useTransaction

      public abstract ResultType useTransaction() throws InnerClassException
      Should be implemented by all extending classes.
      Specified by:
      useTransaction in interface TransactionUser<ResultType>
      Throws:
      InnerClassException
      Since:
      1.0
    • clone

      public Object clone()
      Simply clones the instance with the default clone method since this class contains no member variables.
      Overrides:
      clone in class Object
      Since:
      1.0