Annotation Type Transactional
-
@Target({METHOD,TYPE}) @Retention(RUNTIME) public @interface Transactional
Specify transaction scoping for a method.This is only supported if "Enhancement" is used via javaagent, ANT task or IDE enhancement plugin etc.
Note: Currently there are 3 known annotations that perform this role.
- EJB's javax.ejb.TransactionAttribute
- Spring's org.springframework.transaction.annotation.Transactional
- and this one, Ebean's own Transactional
The default behaviour of EJB (and hence Spring) is to NOT ROLLBACK on checked exceptions. I find this very counter-intuitive. Ebean will provide a property to set the default behaviour to rollback on any exception and optionally change the setting to be consistent with EJB/Spring if people wish to do so.
{@code // a normal class public class MySimpleUserService { // this method is transactional automatically handling // transaction begin, commit and rollback etc
-
-
Optional Element Summary
Optional Elements Modifier and Type Optional Element Description PersistBatchbatchPersist batch mode for the transaction.PersistBatchbatchOnCascadePersist batch mode for the request if not set on the transaction.intbatchSizeThe batch size to use when using JDBC batch mode.booleanflushOnQuerySet this to false if the JDBC batch should not be automatically flushed when a query is executed.booleangetGeneratedKeysSet to false when we want to skip getting generatedKeys.TxIsolationisolationThe transaction isolation level this transaction should have.StringlabelSet a label to identify the transaction in performance metrics and logging.Class<? extends Throwable>[]noRollbackForThe Throwable's that will explicitly NOT cause a rollback to occur.intprofileIdA key used to identify a specific transaction for profiling purposes.booleanreadOnlySet this to true if the transaction should be only contain queries.Class<? extends Throwable>[]rollbackForThe Throwable's that will explicitly cause a rollback to occur.booleanskipCacheSet this to true such that the L2 cache is not used by queries that otherwise would.TxTypetypeThe type of transaction scoping.
-
-
-
-
batch
PersistBatch batch
Persist batch mode for the transaction.- Default:
- io.ebean.annotation.PersistBatch.INHERIT
-
-
-
batchOnCascade
PersistBatch batchOnCascade
Persist batch mode for the request if not set on the transaction.If batch is set to NONE then batchOnCascade can be set to INSERT or ALL and then each save(), delete(), insert(), update() request that cascades to child beans can use JDBC batch.
- Default:
- io.ebean.annotation.PersistBatch.INHERIT
-
-
-
batchSize
int batchSize
The batch size to use when using JDBC batch mode.If unset this defaults to the value set in ServerConfig.
- Default:
- 0
-
-
-
getGeneratedKeys
boolean getGeneratedKeys
Set to false when we want to skip getting generatedKeys.This is typically used in the case of large batch inserts where we get a performance benefit from not calling getGeneratedKeys (as we are going to insert a lot of rows and have no need for the Id values after the insert).
- Default:
- true
-
-
-
isolation
TxIsolation isolation
The transaction isolation level this transaction should have.This will only be used if this scope creates the transaction. If the transaction has already started then this will currently be ignored (you could argue that it should throw an exception).
- Default:
- io.ebean.annotation.TxIsolation.DEFAULT
-
-
-
flushOnQuery
boolean flushOnQuery
Set this to false if the JDBC batch should not be automatically flushed when a query is executed.- Default:
- true
-
-
-
readOnly
boolean readOnly
Set this to true if the transaction should be only contain queries.- Default:
- false
-
-
-
skipCache
boolean skipCache
Set this to true such that the L2 cache is not used by queries that otherwise would.- Default:
- false
-
-
-
rollbackFor
Class<? extends Throwable>[] rollbackFor
The Throwable's that will explicitly cause a rollback to occur.- Default:
- {}
-
-
-
noRollbackFor
Class<? extends Throwable>[] noRollbackFor
The Throwable's that will explicitly NOT cause a rollback to occur.- Default:
- {}
-
-
-
profileId
int profileId
A key used to identify a specific transaction for profiling purposes.If set to -1 this means there should be no profiling on this transaction.
If not set (left at 0) this means the profilingId can be automatically set during transactional enhancement.
- Default:
- 0
-
-