Seria interesante saber porque quieres escuchar el evento de SaveOrUpdate ?
Los eventos a los que te refieres son eventos de persistencia y no de los
objetos pues estos no conocen nada de persistencia.  Los triggers son por
decirlo asi eventos particulares del motor de persistencia.

Saludos.

2010/11/23 Gustavo Ringel <[email protected]>

> La respuesta corta es que tu SaveOrUpdate puede que nunca vaya a la base,
> aun asi queres recibir un evento y hacer algo?
>
> La respuesta larga es que hay un SaveOrUpdateEventListener que debiera
> hacer lo que vos buscas.
>
> Gustavo.
>
> 2010/11/23 tolemaC <[email protected]>
>
> Ahora si.
>>
>> Genial el screencast, me ha sido de mucha ayuda, sobre todo me quedo
>> con la frase de Scott W. Ambler, donde deja claro que para que el uso
>> de ORM sea un exito hay que conocer tanto la parte de los objetos como
>> la parte relacional, y conocidas estas hacer un buen uso de ambos
>> paradigmas.
>>
>> Hasta el momento yo me limitaba a usar NHibernate como una mera
>> herramienta para acceder a mi sistema de base de datos relacional,
>> pero usar un ORM implica más cosas.
>>
>> En el screencast se ha hablado de eventos también, en la parte donde
>> se enumeraban las cosas que un Framework ORM debería tener.
>> Entiendo que un ORM trabaja con los objetos mapeados desde un sistema
>> relacional, por lo tanto entiendo también que los eventos deberían
>> responder a las acciones que haces con los objetos y no a las acciones
>> que realiza el FW de ORM con la base de datos. Entonces si yo escribo
>> un PreInserEventListener y lo asocio a mi SessionFactory, dicho evento
>> debería ser llamado en el momento que yo guardo un objeto nuevo en el
>> FW.
>>
>> Es decir, si yo creo un objeto Persona y llamo a
>> Session.SaveOrUpdate(), NHibernate debería dispararme las llamadas a
>> el evento PreInsert y PostInsert antes y despues de insertar dicho
>> objeto en el Framework, y no hacer lo cuando el framework envíe ese
>> nuevo objeto a la base de datos. Para mi debe ser transparente el
>> cuando
>> NHibernate persista los objetos en la base de datos. Por lo tanto me
>> da igual que NHibernate no haga nada cuando yo llamo a SaveOrUpdate,
>> pero lo que está claro es que si el objeto es nuevo me debe llamar a
>> PreInsert y PostInsert y si el objeto no es nuevo me debe de llamar a
>> PreUpdate y PostUpdate.
>>
>> Así lo entiendo yo.
>>
>> Sin embargo he observado que NHibernate llama a los eventos solo
>> cuando hace Flush, ya sea por que yo llamo a Flush o por que lo hace
>> él internamente. Yo no quiero tener que hacer Flush para que se lancen
>> mis eventos, quiero que se lancen cuando les toca.
>>
>> La cosa, pues, es: ¿Los EventListeners están para disparar acciones en
>> los eventos de los objetos o para disparar acciones en los eventos de
>> los datos relacionales de mi RDBMS??
>>
>> Yo opino que deben asociarse a los objetos, para los datos ya tenemos
>> los triggers.
>>
>> Saludos,
>>
>>
>> On 22 nov, 13:14, Fabio Maulo <[email protected]> wrote:
>> > Sería muy bueno que ante de usar una herramienta basada en ORM se
>> estudie un
>> > poco el Object Relational Mappinghttp://
>> altnet-hispano.pbworks.com/w/page/12367724/van-2009-09-19-intr...
>> >
>> > 2010/11/22 tolemaC <[email protected]>
>> >
>> >
>> >
>> >
>> >
>> > > Vaya no tenía que haber hecho dos preguntas en un mismo mensaje :/, ya
>> > > lo se para la próxima.
>> >
>> > > Carlos Peix,
>> >
>> > > Imagina que estoy depurando mi código, justo antes de ejecutar el
>> > > SaveOrUpdate de una entidad, dentro de una transacción, con el SQL
>> > > Management Strudio realizo la consulta sobre la tabla y la consulta
>> > > devuelve los registros, cuando llamo a SaveOrUpdate y antes de hacer
>> > > commit, ejecuto la misma consulta en el SMS y se queda esperando hasta
>> > > que me da un time-out, si hago commit entonces si puedo realizar la
>> > > consulta.
>> >
>> > > José F. Romaniello,
>> >
>> > > Donde puedo aprender que es POID y que es HILO? no tengo ni idea de
>> > > que es cada una de ellas.
>> >
>> > > Gustavo,
>> >
>> > > Lo que quiero es que, aunque esté en una transacción y hayan cambios
>> > > pendientes de confirmar, pueda consultar la base de datos desde otro
>> > > proceso, como por ejemplo el SQL Management Studio, y ver los cambios
>> > > pendientes de dicha transacción, y en el caso de que se cancele la
>> > > transacción esos datos desaparecerían.
>> >
>> > > La segunda pregunta la explicaré mejor en otro mensaje para no estar
>> > > con dos cosas al mismo tiempo.
>> >
>> > > Muchas gracias a todos.
>> > > Saludos,
>> >
>> > > On 22 nov, 11:20, Carlos Peix <[email protected]> wrote:
>> > > > Hola tolemac,
>> >
>> > > > En cuanto al punto 1), estas seguro de que tenes un bloqueo o
>> simplemente
>> > > no
>> > > > ves el registro en la DB? mas precisamente, tenes una excepcion de
>> > > bloqueo o
>> > > > sacas esa conclusion porque haces el query y no aparece el registro?
>> >
>> > > > Con respecto al punto 2), por diseño es tal como lo observas.
>> > > eventualmente
>> > > > y si queres ver los datos en la base de datos, deberias hacer un
>> flush.
>> >
>> > > > ----------------------------------
>> > > > Carlos Peix
>> >
>> > > > 2010/11/20 tolemaC <[email protected]>
>> >
>> > > > > Hola chicos,
>> >
>> > > > > Estoy haciendo un proyecto de gestión sobre WinForms con SQL
>> Server y
>> > > > > C# 4.0.
>> > > > > Me he decidido por usar NHibernate (+ Fluent Nhibernate) y estoy
>> muy
>> > > > > contento con él.
>> >
>> > > > > Tengo dos dudas aunque en principio no son un problema:
>> >
>> > > > > 1) Cuando bajo una transacción creo una nueva entidad y llamo a
>> > > > > Session.SaveOrUpdate(entidad), NHibernate me bloquea la tabla en
>> la
>> > > > > base de datos hasta que no hago Commit o Rollback. Al menos no
>> puedo
>> > > > > consultarla con el SQL Management Studio. El IsolateLevel de la
>> > > > > transacción es ReadUncommitted. Hay alguna forma de que no te
>> bloquee
>> > > > > la tabla y se puedan ver los datos, que todavía no están
>> confirmados,
>> > > > > con el SQL Management Studio?
>> >
>> > > > > 2) Estoy manejando los eventos de la sesión (Events, no uso
>> > > > > Intercetors), me he dado cuenta de que cuando llamo a
>> > > > > Session.SaveOrUpdate no se generan los eventos hasta que no hago
>> Flush
>> > > > > en la sessión, ¿es normal? ¿como prodría evitarlo?, a mi me da
>> igual
>> > > > > cuando se haga flush, pero si me interesa mucho que el evento se
>> > > > > dispare cuando llamo a SaveOrUpdate.
>> >
>> > > > > Un saludo a todos y gracias de antemano.
>> >
>> > > > > --
>> > > > > 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
>> >
>> > --
>> > 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

Responder a