El punto de vista de Nelo en el punto 3 tambien lo pude apreciar en esta propuesta
http://msdn.microsoft.com/es-es/architecture/default.aspx, guia de arquitectura en n capas orientadas al dominio (DDD), pagina 224, pueden ahondar un poco mas en este tema por favor saludos El día 5 de mayo de 2010 10:49, Nelo Pauselli <[email protected]> escribió: > 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 <[email protected]>: >> Ninguno; si estas seguro che en el punto 1 no se escribe nada, que la cache >> te funciona barbaro, que la base, como siempre necesita trabajar con >> transaciones, crea un transaction por cada query y te bancas el manejo de >> transaction hecho a manopla (no AOP). >> Ahora ago yo la pregunta: cual es el problema que encontraste con que una >> transaction de NH abarque el tiempo de ejecuccion de una action del >> controler ? >> Para mi tener [Transactional] y/o [Transactional(Ambient=true)] es muy >> comodo. >> >> 2010/5/5 Nelo Pauselli <[email protected]> >>> >>> Hola gente, como ya sabemos, se dice que en NH conviene trabajar >>> siempre dentro de una transacción. ¿por qué? >>> >>> No estoy preguntando por qué hay que trabajar con transacciones, sino >>> porque tengo que extender la vida de mi transacción, en un ambiente >>> web por ejemplo, desde el BeginRequest hasta el EndRequest. o en MVC >>> desde el inicio de la acción (Action) hasta su final. >>> >>> Ejemplo: tenemos una aplicación que, en un request: >>> 1. consulta datos, >>> 2. decide si hacer una modificación, >>> 3. hace la modificación (en los objetos y los correspondientes >>> SaveOrUpdates) y >>> 4. armo la respuesta para el usuario consultando algunas propiedades >>> de los objetos >>> >>> mi pregunta es ¿cual sería el problema de tener una transacción que >>> abarque solo el punto 3? >>> >>> Saludos. >>> Nelo. >>> >>> -- >>> Para escribir al Grupo, hágalo a esta dirección: >>> [email protected] >>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano >> >> >> -- >> Fabio Maulo >> >> -- >> Para escribir al Grupo, hágalo a esta dirección: >> [email protected] >> Para más, visite: http://groups.google.com/group/NHibernate-Hispano > > -- > Para escribir al Grupo, hágalo a esta dirección: > [email protected] > Para más, visite: http://groups.google.com/group/NHibernate-Hispano -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano
