Si utilizo @Transactional en mi DAO, ¿todas las consultas de mi EntityManager se encapsularán con commit y close? ¿O necesito usar la plantilla Spring (plantilla JPA, plantilla Hibernate)? ¿Cuál es la diferencia entre usar @Transactional y la plantilla de Spring?¿Cuál es la diferencia entre usar @Transactional y la plantilla de Spring?
Respuesta
La diferencia es que el uso de la demarcación basada en la anotación de transacciones (@Transactional
) y el TransactionTemplate
es que el uso de los TransactionTemplate
parejas usted para la infraestructura de transacciones de primavera y significa que usted programación manejar estableciendo el estado de la transacción si la transacción debe ser revertido. Puede usar la demarcación de transacción basada en anotaciones con el soporte de transacciones de Spring o con transacciones de AspectJ fuera de un contenedor de Spring.
Véase también online documentation for transactions in Spring.
Las clases de plantillas de Spring solo están ahí para proporcionar una API más agradable para realizar operaciones de persistencia: no se ocupan de las transacciones. Si desea tener operaciones transaccionales, debe usar el enfoque de anotación @Transactional, o usar TransactionTemplate.
¿Quiere decir usin @transactional encapsulará mis métodos de dao con commit, close o al usar la plantilla de transacción de primavera (jpatemplate, hibernatetemplate)?
Cuando utiliza @transactional con la configuración Spring correcta, Spring reconocerá que el método necesita una transacción y se encargará de la creación de la transacción, confirmar y cerrar para usted.
Como dijo skaffman, @transactional no está directamente relacionado con las clases de plantilla. Se pueden usar para cualquier clase que pueda necesitar transacciones.
- 1. ¿Cuál es la diferencia entre Spring BeanFactoryAware y ApplicationContextAware?
- 2. Diferencia entre las anotaciones JTA y Spring @Transactional
- 3. ¿Cuál es la diferencia entre un tema y una plantilla?
- 4. ¿Cuál es la diferencia entre la plantilla de función y la función de plantilla?
- 5. ¿Cuál es la diferencia entre usar MD5.Create y MD5CryptoServiceProvider?
- 6. Cuál es la diferencia entre $ y jQuery
- 7. ¿Cuál es la diferencia entre usar WorkflowInvoker y WorkflowApplication?
- 8. ¿Cuál es la diferencia entre estas 2 inyecciones Spring IOC?
- 9. ¿Cuál es la diferencia entre un contexto de aplicación Spring y un contenedor Spring?
- 10. ¿Cuál es la diferencia entre dict() y {}?
- 11. Cuál es la diferencia entre = y: =
- 12. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 13. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 14. ¿cuál es la diferencia entre:.! y: r !?
- 15. ¿Cuál es la diferencia entre ".equals" y "=="?
- 16. ¿Cuál es la diferencia entre {0} y ""?
- 17. ¿Cuál es la diferencia entre .ToString (+) y ""
- 18. Cuál es la diferencia entre $ (...) y `...`
- 19. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 20. ¿Cuál es la diferencia entre + = y = +?
- 21. ¿Cuál es la diferencia entre " " y ""?
- 22. ¿cuál es la diferencia entre la especialización explícita de plantilla y la función normal?
- 23. ¿Cuál es la diferencia entre las dependencias spring-context y spring-core?
- 24. ¿Cuál es la diferencia entre ModelAndView y ModelMap?
- 25. ¿Cuál es la diferencia entre "plantilla <class T>" y "plantilla <typename T>"?
- 26. ¿Cuál es la diferencia entre LocalContainerEntityManagerFactoryBean y LocalEntityManagerFactoryBean?
- 27. ¿Cuál es la diferencia de usar addEventListener?
- 28. ¿Cuál es la diferencia entre "mutex" y "lock"?
- 29. ¿Cuál es la diferencia entre uno mismo y la ventana?
- 30. ¿Cuál es la diferencia entre ContentControl.Template y ContentControl.ContentTemplate