true transaction pasar mvc example español entre dispatcherservlet datos controladores spring hibernate jpa transactions jta

spring - transaction - Anotación transaccional en toda la clase+excluyendo un solo método



spring mvc example (1)

Tengo una clase con @Transactional anotación @Transactional (en lugar de marcarla para todos sus métodos).

Aunque tengo un solo método dentro de esa clase que no debería ser anotado como @Transactional .

Mi pregunta es: ¿hay una anotación que pueda poner en este método para marcarla como "no transaccional"? o debo comenzar a marcar cada método individual en esta clase como "transaccional" excluyendo este método (mucho trabajo)

Gracias.


Existen diferentes estrategias de propagación de transacciones a utilizar. Estos existen en la Propagation la enumeración. Los que podrías querer usar son

/** * Execute non-transactionally, suspend the current transaction if one exists. * Analogous to EJB transaction attribute of the same name. * <p>Note: Actual transaction suspension will not work on out-of-the-box * on all transaction managers. This in particular applies to JtaTransactionManager, * which requires the {@code javax.transaction.TransactionManager} to be * made available it to it (which is server-specific in standard J2EE). * @see org.springframework.transaction.jta.JtaTransactionManager#setTransactionManager */ NOT_SUPPORTED(TransactionDefinition.PROPAGATION_NOT_SUPPORTED), /** * Execute non-transactionally, throw an exception if a transaction exists. * Analogous to EJB transaction attribute of the same name. */ NEVER(TransactionDefinition.PROPAGATION_NEVER), // maybe not this one

Así que anota el método dentro de tu clase con cualquiera de estos.

@Transactional public class MyTransactionalClass { @Transactional(propagation = Propagation.NOT_SUPPORTED) public void nonTransactionalMethod() {...} }

Puedes encontrar todas las estrategias de propagación here .