## 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.
`Class<? extends 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.
`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.
`Class<? extends 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.
`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.
`String` `value` A qualifier value for the specified transaction.

### value

    public abstract 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 Class<? extends 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 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 `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 Class<? extends 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 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:
    {}