José:
Si, se que está escrito por todos lados y justamente por eso la
pregunta de ¿por qué debe ser así?. Soy una de esas personas que no se
conforman con el "porque si". Justamente la idea del mail era
investigar ese porque (ademas, estuvo medio silenciosa la lista los
últimos días).
Fabio:
En el punto 1, 2 y 4 no se escribe en la db (y si se escribe está mal,
y hasta podría haber un control a nivel de eventos)
Me preocupa el: "que la cache te funciona barbaro" ¿que no podría
funcionar? así se a donde orientar los test (no te voy a decir que "me
tires una punta" porque se va a desviar la conversación).
¿los motores de db también crean transacciones para los select?...
igual no me afectaría en principio.
Problema 1: que necesito manejar un pool de transacciones a distintas
bases, alguna con NH (las de mi dominio), otras con directamente
ejecutando el INSERT o DELETE y hasta podría llegar a ser que tenga
que invocar servicios externos los cuales tendrían mecanismos
compensatorios para los rollback. Esto se llama transacciones
distribuidas ¿no?. Entonces: yo digo cuando empiezan las transacciones
y cuando terminan y como terminan.
Problema 2: que las excepciones de validación que da nhv al estar
integrado con nh, lo hace en el Flush ¿correcto?, que se haría antes
del Commit, al finalizar el Action ¿voy bien?. Yo preferiría poder
interceptar antes estas excepciones para enviar un mensaje al fronend
del usuario. Es decir, quisiera que el controller maneje la excepción
y envíe el mensaje a que el controller lanze una excepción.
Problema 3 (conflicto filosófico-personal): pienso, hasta ahora por lo
menos, que la transacción es un concepto de negocio y no me agrada del
todo el hecho de transferirle la responsabilidad de esto a la
infraestructura, sino que espero de esta que me de el soporte para
decidir, desde el negocio, cuando hacer el begin, commit o rollback de
una transacción.
Nelo.
2010/5/5 Fabio Maulo <
fabio...@gmail.com>: