As previously mentioned, one of the advantages of EJBs is that they automatically take care of transactions. However, there is still some configuration that we need to do in order to better control transaction management.
Transactions allow us to execute all the steps in a method or, if one of the steps fails (for instance, an exception is thrown), roll back the changes made in that method.
Primarily, what we need to configure is our bean's behavior if one of its methods is called while a transaction is in progress. Should the bean's method become part of the existing transaction? Should the existing transaction be suspended and a new transaction created just for the bean's method? We can configure these behaviors via the @TransactionAttribute
annotation.
The @TransactionAttribute
annotation allows us to control how an EJB's methods will behave both when invoked while a transaction is in progress and when invoked when no transaction is in progress. This annotation...