org.springframework.transaction.annotation
Annotation Type Transactional


@Target(value={METHOD,TYPE})
@Retention(value=RUNTIME)
@Inherited
@Documented
public @interface Transactional

Describes transaction attributes on a method or class.

This annotation type is generally directly comparable to Spring's RuleBasedTransactionAttribute class, and in fact AnnotationTransactionAttributeSource will directly convert the data to the latter class, so that Spring's transaction support code does not have to know about annotations. If no rules are relevant to the exception, it will be treated like DefaultTransactionAttribute (rolling back on runtime exceptions).

For specific information about the semantics of this annotation's attributes, consider the TransactionDefinition and TransactionAttribute javadocs.

Since:
1.2
Author:
Colin Sampaleanu, Juergen Hoeller
See Also:
TransactionAttribute, DefaultTransactionAttribute, RuleBasedTransactionAttribute

Optional Element Summary
 Isolation isolation
          The transaction isolation level.
 java.lang.Class<? extends java.lang.Throwable>[] noRollbackFor
          Defines zero (0) or more exception Classes, which must be a subclass of Throwable, indicating which exception types must not cause a transaction rollback.
 java.lang.String[] noRollbackForClassName
          Defines zero (0) or more exception names (for exceptions which must be a subclass of Throwable) indicating which exception types must not cause a transaction rollback.
 Propagation propagation
          The transaction propagation type.
 boolean readOnly
          true if the transaction is read-only.
 java.lang.Class<? extends java.lang.Throwable>[] rollbackFor
          Defines zero (0) or more exception classes, which must be a subclass of Throwable, indicating which exception types must cause a transaction rollback.
 java.lang.String[] rollbackForClassName
          Defines zero (0) or more exception names (for exceptions which must be a subclass of Throwable), indicating which exception types must cause a transaction rollback.
 int timeout
          The timeout for this transaction.
 java.lang.String value
          A qualifier value for the specified transaction.
 

value

public abstract java.lang.String value
A qualifier value for the specified transaction.

May be used to determine the target transaction manager, matching the qualifier value (or the bean name) of a specific PlatformTransactionManager bean definition.

Default:
""

propagation

public abstract Propagation propagation
The transaction propagation type. Defaults to Propagation.REQUIRED.

See Also:
TransactionDefinition.getPropagationBehavior()
Default:
org.springframework.transaction.annotation.Propagation.REQUIRED

isolation

public abstract Isolation isolation
The transaction isolation level. Defaults to Isolation.DEFAULT.

See Also:
TransactionDefinition.getIsolationLevel()
Default:
org.springframework.transaction.annotation.Isolation.DEFAULT

timeout

public abstract int timeout
The timeout for this transaction. Defaults to the default timeout of the underlying transaction system.

See Also:
TransactionDefinition.getTimeout()
Default:
-1

readOnly

public abstract boolean readOnly
true if the transaction is read-only. Defaults to false.

This just serves as a hint for the actual transaction subsystem; it will not necessarily cause failure of write access attempts. A transaction manager which cannot interpret the read-only hint will not throw an exception when asked for a read-only transaction.

See Also:
TransactionDefinition.isReadOnly()
Default:
false

rollbackFor

public abstract java.lang.Class<? extends java.lang.Throwable>[] rollbackFor
Defines zero (0) or more exception classes, which must be a subclass of Throwable, indicating which exception types must cause a transaction rollback.

This is the preferred way to construct a rollback rule, matching the exception class and subclasses.

Similar to RollbackRuleAttribute.RollbackRuleAttribute(Class clazz)

Default:
{}

rollbackForClassName

public abstract java.lang.String[] rollbackForClassName
Defines zero (0) or more exception names (for exceptions which must be a subclass of Throwable), indicating which exception types must cause a transaction rollback.

This can be a substring, with no wildcard support at present. A value of "ServletException" would match javax.servlet.ServletException and subclasses, for example.

NB: Consider carefully how specific the pattern is, and whether to include package information (which isn't mandatory). For example, "Exception" will match nearly anything, and will probably hide other rules. "java.lang.Exception" would be correct if "Exception" was meant to define a rule for all checked exceptions. With more unusual Exception names such as "BaseBusinessException" there is no need to use a FQN.

Similar to RollbackRuleAttribute.RollbackRuleAttribute(String exceptionName)

Default:
{}

noRollbackFor

public abstract java.lang.Class<? extends java.lang.Throwable>[] noRollbackFor
Defines zero (0) or more exception Classes, which must be a subclass of Throwable, indicating which exception types must not cause a transaction rollback.

This is the preferred way to construct a rollback rule, matching the exception class and subclasses.

Similar to NoRollbackRuleAttribute.NoRollbackRuleAttribute(Class clazz)

Default:
{}

noRollbackForClassName

public abstract java.lang.String[] noRollbackForClassName
Defines zero (0) or more exception names (for exceptions which must be a subclass of Throwable) indicating which exception types must not cause a transaction rollback.

See the description of rollbackForClassName() for more info on how the specified names are treated.

Similar to NoRollbackRuleAttribute.NoRollbackRuleAttribute(String exceptionName)

Default:
{}