Quiero saber qué sucede realmente cuando anota un método con @Transactional
? Por supuesto, sé que Spring ajustará ese método en una transacción.Spring - @Transactional - ¿Qué sucede en el fondo?
Pero, tengo las siguientes dudas:
- oí que la primavera se crea una clase de proxy ? ¿Alguien puede explicar esto en más profundidad. ¿Qué reside realmente en esa clase proxy? ¿Qué pasa con la clase real? Y ¿cómo puedo ver creado clase proxy de primavera
- También leí en documentos fuente que:
Nota: Dado que este mecanismo está basado en proxies, único método 'externo' llamadas entrantes a través el proxy será interceptado. Esto significa que la "auto invocación", es decir, un método dentro del objeto objetivo que llama a otro método del objeto objetivo, no dará lugar a una transacción real en el tiempo de ejecución, incluso si el método invocado está marcado con
@Transactional
.
Fuente: http://static.springsource.org/spring/docs/2.0.x/reference/transaction.html
¿Por qué sólo las llamadas a métodos externos estará bajo transacción y no los métodos de auto-Invocación?
La discusión relevante está aquí: http://stackoverflow.com/questions/3120143/where-should-i-put-transactional-annotation-at-an-interface-definition-or-at-an/3120323#3120323 –