No es singleton es static

Continuamos teniendo problemas. Ven correcta la clase de session que les
indique anteriormente?

Cada vez que se hace una petición se hace un OpenSession



El 10 de agosto de 2010 07:28, Gustavo Ringel
<[email protected]>escribió:

> Ok, tenes razon que eso podria llevar a que para cada accion alguien piense
> que es bueno hacer apertura y cerrado de la session.
>
> El tema es usar la session por el periodo que dura el caso de uso /
> business transaccion y no mas que eso.
>
> En este caso habla de MVC y por tanto en general es por todo el request.
>
> No usar la session como un singleton, ni abrirla y cerrarla por cada accion
> con la base...
>
> Gustavo.
>
> 2010/8/10 Fabio Maulo <[email protected]>
>
> la session "lo mas corto" ?
>> seguro no hay que tener una sola session para toda la app, pero "corto" ?
>>
>> 2010/8/9 Gustavo Ringel <[email protected]>
>>
>>> ISessionStorage, me suena a dinamita...
>>> En la documentacion de NH dice que session tiene que ser lo mas corto
>>> posible y apenas da una excepcion hay que tirarla
>>> Ahi lo que parece es que crean una session al principio y van devolviendo
>>> la misma session, no se cual es el life cycle, pero bueno...fijense bien si
>>> estan siguiendo los principios de manejo de session.
>>>
>>> Gustavo.
>>>
>>> 2010/8/9 NM <[email protected]>
>>>
>>>> Este es nuestro método mediante el cual obtenemos  session
>>>>
>>>>
>>>> public static ISession Session(string database)
>>>>        {
>>>>            if (SessionStorage == null)
>>>>            {
>>>>                throw new Exception("NHibernateSession no está
>>>> inicializado. Llama a Init antes de operar con él. Comprueba también
>>>> que haya un ISessionStorage asociado a NHibernate.");
>>>>            }
>>>>
>>>>            ISession session = SessionStorage.Session(database);
>>>>            if (session == null)
>>>>            {
>>>>                session = _sessionFactory[database].OpenSession();
>>>>                SessionStorage.SetSession(database, session);
>>>>            }
>>>>
>>>>            return session;
>>>>        }
>>>>
>>>> Esta es la forma en que lo empleamos
>>>>
>>>>            var session =
>>>> NHibernateSession.Session(NHibernateSession.BBDD);
>>>>            using (var transaction = session.BeginTransaction())
>>>>            {
>>>>                var listaMensaje = session
>>>>                    .CreateQuery(@"
>>>>                        from
>>>>                            NhOfiMensajeria M
>>>>                        where
>>>>                            M.Referencia like 'FD:%'
>>>>                            And M.AUsuario=:valorUsuarioMensajeria
>>>> ")
>>>>                    .SetParameter("valorUsuarioMensajeria",
>>>> valorUsuarioMensajeria)
>>>>                    .List<NhOfiMensajeria>();
>>>>
>>>>                transaction.Commit();
>>>>             }
>>>>
>>>> On 9 ago, 16:40, Gustavo Ringel <[email protected]> wrote:
>>>> > Si tu flush mode no es en commit el commit no hace flush de todo lo
>>>> que
>>>> > escribiste.
>>>> > Adicionalmente suena a que tenes lo que llama un Time Bomb session
>>>> > management, o sea suena a que abris una sola session.
>>>> > Si abris sessions de NHibernate en cada request no tendrias que tener
>>>> ningun
>>>> > problema de leer los datos que se escriben en la otra base.
>>>> > Claro que si por ejemplo cacheas, o le decis a NH que los datos no son
>>>> > mutables, podes tener distintos tipos de desincronizacion.
>>>> >
>>>> > Gustavo.
>>>> >
>>>> > 2010/8/9 Maria Teresa Ruiz Espinosa <[email protected]>
>>>> >
>>>> >
>>>> >
>>>> > > Nuestro funcionamiento normal es hacer un beginTransaction y al
>>>> finalizar
>>>> > > la consulta un commit de la transacción.
>>>> >
>>>> > > No tenemos definido ningún FlushMode en especifico.
>>>> >
>>>> > >  --
>>>> > > 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
>>>
>>
>>
>>
>> --
>> 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