Class SQLConnection.Transaction
- All Implemented Interfaces:
SQLCallable
,AutoCloseable
- Enclosing class:
- SQLConnection
This object's Object.finalize()
method attempts to roll back the transaction if it hasn't already
been finished.
- Author:
- Matthew Tropiano
-
Field Summary
Fields inherited from interface com.blackrook.sql.SQLCallable
DEFAULT_BATCH_SIZE
-
Method Summary
Modifier and TypeMethodDescriptionvoid
abort()
Aborts this transaction and prevents further calls on it.void
close()
If this transaction is not finished, this aborts it.void
commit()
Commits the actions completed so far in this transaction.void
complete()
Completes this transaction and prevents further calls on it.<T> T[]
Performs a query and creates objects from the resultant rows, setting relevant fields on them.Performs a query that returns rows and extracts them into a result.<T> T
Performs a query and creates an object from it from the first result row extracted, setting relevant fields.Performs a query and extracts the first row result into a singleSQLRow
.int[]
getUpdateBatch
(String query, int granularity, Collection<Object[]> parameterList) Performs a series of update queries on a single statement on a connection and returns the batch result.getUpdateBatchResult
(String query, Collection<Object[]> parameterList) Performs an update query (INSERT, DELETE, UPDATE, or other commands that do not return rows) and extracts each set of result data into a SQLResult.long[]
getUpdateLargeBatch
(String query, int granularity, Collection<Object[]> parameterList) Performs a series of update queries on a single statement on a connection and returns the batch result.getUpdateResult
(String query, Object... parameters) Performs an update query (INSERT, DELETE, UPDATE, or other commands that do not return rows) and extracts the data/affected data/generated data into a SQLResult.boolean
void
rollback()
Rolls back this entire transaction.void
Rolls back this transaction to aSavepoint
.CallsConnection.setSavepoint()
on the encapsulated connection.setSavepoint
(String name) CallsConnection.setSavepoint()
on the encapsulated connection.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface com.blackrook.sql.SQLCallable
getUpdateBatch, getUpdateBatch, getUpdateBatch, getUpdateBatchResult, getUpdateLargeBatch, getUpdateLargeBatch, getUpdateLargeBatch
-
Method Details
-
getRow
Description copied from interface:SQLCallable
Performs a query and extracts the first row result into a singleSQLRow
.- Specified by:
getRow
in interfaceSQLCallable
- Parameters:
query
- the query statement to execute.parameters
- list of parameters for parameterized queries.- Returns:
- the single result row returned, or null if no row returned.
-
getRow
Description copied from interface:SQLCallable
Performs a query and creates an object from it from the first result row extracted, setting relevant fields.Each result row is applied via the target object's public fields and setter methods.
For instance, if there is a column is a row called "color", its value will be applied via the public field "color" or the setter "setColor()". Public fields take precedence over setters.
Only certain types are converted without issue. Below is a set of source types and their valid target types:
Conversion of Types Boolean Boolean, all numeric primitives and their autoboxed equivalents, String. Number Boolean (zero is false, nonzero is true), all numeric primitives and their autoboxed equivalents, String, Date, Timestamp. Timestamp Long (both primitive and object as milliseconds since the Epoch), Timestamp, Date, String Date Long (both primitive and object as milliseconds since the Epoch), Timestamp, Date, String String Boolean, all numeric primitives and their autoboxed equivalents, String, byte[], char[]. Clob Boolean, all numeric primitives and their autoboxed equivalents, String, byte[], char[]. Blob String, byte[], char[]. NClob Boolean, all numeric primitives and their autoboxed equivalents, String, byte[], char[]. byte[] String, byte[], char[]. char[] Boolean, all numeric primitives and their autoboxed equivalents, String, byte[], char[]. - Specified by:
getRow
in interfaceSQLCallable
- Type Parameters:
T
- the returned data type.- Parameters:
type
- the class type to instantiate.query
- the query to execute.parameters
- list of parameters for parameterized queries.- Returns:
- an instantiated object with the pertinent fields set, or null if no rows.
-
getResult
Description copied from interface:SQLCallable
Performs a query that returns rows and extracts them into a result.- Specified by:
getResult
in interfaceSQLCallable
- Parameters:
query
- the query to execute.parameters
- list of parameters for parameterized queries.- Returns:
- the result of the query.
-
getResult
Description copied from interface:SQLCallable
Performs a query and creates objects from the resultant rows, setting relevant fields on them.Each result row is applied via the target object's public fields and setter methods.
For instance, if there is a column is a row called "color", its value will be applied via the public field "color" or the setter "setColor()". Public fields take precedence over setters.
Only certain types are converted without issue. Below is a set of source types and their valid target types:
Conversion of Types Boolean Boolean, all numeric primitives and their autoboxed equivalents, String. Number Boolean (zero is false, nonzero is true), all numeric primitives and their autoboxed equivalents, String, Date, Timestamp. Timestamp Long (both primitive and object as milliseconds since the Epoch), Timestamp, Date, String Date Long (both primitive and object as milliseconds since the Epoch), Timestamp, Date, String String Boolean, all numeric primitives and their autoboxed equivalents, String, byte[], char[]. Clob Boolean, all numeric primitives and their autoboxed equivalents, String, byte[], char[]. Blob String, byte[], char[]. NClob Boolean, all numeric primitives and their autoboxed equivalents, String, byte[], char[]. byte[] String, byte[], char[]. char[] Boolean, all numeric primitives and their autoboxed equivalents, String, byte[], char[]. - Specified by:
getResult
in interfaceSQLCallable
- Type Parameters:
T
- the returned data type.- Parameters:
type
- the class type to instantiate.query
- the query to execute.parameters
- list of parameters for parameterized queries.- Returns:
- an array of instantiated objects with the pertinent fields set for each row.
-
getUpdateResult
Description copied from interface:SQLCallable
Performs an update query (INSERT, DELETE, UPDATE, or other commands that do not return rows) and extracts the data/affected data/generated data into a SQLResult.- Specified by:
getUpdateResult
in interfaceSQLCallable
- Parameters:
query
- the query to execute.parameters
- list of parameters for parameterized queries.- Returns:
- the update result returned (usually number of rows affected and or generated ids).
-
getUpdateBatch
Description copied from interface:SQLCallable
Performs a series of update queries on a single statement on a connection and returns the batch result.- Specified by:
getUpdateBatch
in interfaceSQLCallable
- Parameters:
query
- the query statement to execute.granularity
- the amount of statements to execute at a time. If 0 or less, no granularity.parameterList
- the list of parameter sets to pass to the query for each update.- Returns:
- the update result returned (usually number of rows affected and or generated ids).
-
getUpdateLargeBatch
public long[] getUpdateLargeBatch(String query, int granularity, Collection<Object[]> parameterList) Description copied from interface:SQLCallable
Performs a series of update queries on a single statement on a connection and returns the batch result.- Specified by:
getUpdateLargeBatch
in interfaceSQLCallable
- Parameters:
query
- the query statement to execute.granularity
- the amount of statements to execute at a time. If 0 or less, no granularity.parameterList
- the list of parameter sets to pass to the query for each update.- Returns:
- the update result returned (usually number of rows affected and or generated ids).
-
getUpdateBatchResult
Description copied from interface:SQLCallable
Performs an update query (INSERT, DELETE, UPDATE, or other commands that do not return rows) and extracts each set of result data into a SQLResult.This is usually more efficient than multiple calls of
SQLCallable.getUpdateResult(String, Object...)
, since it uses the same prepared statement. However, it is not as efficient asSQLCallable.getUpdateBatch(String, int, Collection)
, but for this method, you will get the generated ids in each result, if any.- Specified by:
getUpdateBatchResult
in interfaceSQLCallable
- Parameters:
query
- the query statement to execute.parameterList
- the list of parameter sets to pass to the query for each update.- Returns:
- the list of update results returned, each corresponding to an update.
-
isFinished
public boolean isFinished()- Returns:
- true if this transaction has been completed or false if more methods can be invoked on it.
-
complete
Completes this transaction and prevents further calls on it. This callsConnection.commit()
. on the encapsulated connection and resets its previous transaction level state plus its auto-commit state.- Throws:
IllegalStateException
- if this transaction was already finished.SQLException
- if this causes a database error.
-
abort
Aborts this transaction and prevents further calls on it. This callsConnection.rollback()
. on the encapsulated connection and resets its previous transaction level state plus its auto-commit state.- Throws:
IllegalStateException
- if this transaction was already finished.SQLException
- if this causes a database error.
-
commit
Commits the actions completed so far in this transaction. This is also called duringcomplete()
.- Throws:
IllegalStateException
- if this transaction was already finished.SQLException
- if this causes a database error.
-
rollback
Rolls back this entire transaction.- Throws:
IllegalStateException
- if this transaction was already finished.SQLException
- if this causes a database error.
-
rollback
Rolls back this transaction to aSavepoint
. Everything executed after theSavepoint
passed into this method will be rolled back.- Parameters:
savepoint
- theSavepoint
to roll back to.- Throws:
IllegalStateException
- if this transaction was already finished.SQLException
- if this causes a database error.
-
setSavepoint
CallsConnection.setSavepoint()
on the encapsulated connection.- Returns:
- a generated
Savepoint
of this transaction. - Throws:
IllegalStateException
- if this transaction was already finished.SQLException
- if this causes a database error.
-
setSavepoint
CallsConnection.setSavepoint()
on the encapsulated connection.- Parameters:
name
- the name of the savepoint.- Returns:
- a generated
Savepoint
of this transaction. - Throws:
IllegalStateException
- if this transaction was already finished.SQLException
- if this causes a database error.
-
close
public void close()If this transaction is not finished, this aborts it.- Specified by:
close
in interfaceAutoCloseable
- See Also:
-