Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

273
Vistas
¿Debería poner la anotación @Transactional para los submétodos también en primavera?

Tengo un método principal de controlador de base de datos, que llama a otros métodos, que también funcionan con cosas de BD.

Puse la anotación @Transactional para el método principal, porque quiero revertir todo, si algo sale mal.

Mi pregunta es: ¿debería poner esta anotación también para los submétodos, o sabrá que los submétodos fueron llamados desde un método que es transaccional?

Por ejemplo, en el método de eliminación se produce una excepción, ¿cómo puedo asegurarme de que la parte de escritura también se revertirá?

 @Transactional public void maintDbTings() { writing(); deleting(); } @Transactional //do I need this? public void writing() { //no exceptions } @Transactional //do I need this? public void deleting() { //exception occurs }
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

En lenguaje sencillo, cuando tienes esto:

 @Transactional public void maintDbTings() { writing(); } @Transactional //do I need this? public void writing() { //no exceptions }

Y llame a mainDbTings , el @Transactional en la writing no tiene efecto. Lo que significa que la transacción que se inició para mainDbThings aún estará presente/abierta por escrito. Entonces, en este caso, puede soltarlo fácilmente.

Por otro lado, dado que la writing es pública , alguien podría llamarlo esperando que sea transaccional, ya que es muy probable que sea una clase de servicio. En este caso, hacer que la writing sea @Transactional es obligatorio y no puede descartarlo.

Así que depende de tus necesidades realmente.

over 4 years ago · Santiago Trujillo Denunciar

0

Spring comienza una transacción cuando encuentra un método anotado con @Transactional . El alcance de la transacción cubre la ejecución de ese método, la ejecución de cualquier método que invoque ese método, y así sucesivamente, hasta que el método regrese. Todos los recursos administrados que están cubiertos por PlatformTransactionManager configurado y que usa durante el ámbito de la transacción participan en la transacción. Por ejemplo, si usa org.springframework.jdbc.datasource.DataSourceTransactionManager , una conexión recuperada del origen de datos DataSource participa en la transacción automáticamente. La transacción finaliza de una de dos maneras: el método completa la ejecución directamente y el administrador de transacciones confirma la transacción, o el método genera una excepción y el administrador de transacciones revierte la transacción.

Espero que esté claro ahora.

over 4 years ago · Santiago Trujillo Denunciar

0

Puede usar propiedades de propagación como REQUIRED, REQUIRES_NEW, NESTED de acuerdo con sus requisitos, como se describe en el siguiente enlace:

http://docs.spring.io/spring-framework/docs/4.2.x/spring-framework-reference/html/transaction.html

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda