Gracias Carlos Si, totalmente de acuerdo que no es "indeseado" que el SP puede llegar a tocar algo y sería necesario invalidarlo. Lo que me parece, que no se si está bien es que "por default", si no existe el tag "invalide todo" y si lo agregás vacío, no invalida. Entiendo que es una decisión de diseño y puede que por ahi no vea si está bien o no, porque recién empiezo a usar la Caché. Pero que el nombre del campo se llame "synchronize", me da la impresión que si no está, no debería sincronizar.
Saludos. Andrés Falcón El jueves, 12 de mayo de 2016, 14:49:28 (UTC-3), Carlos Peix escribió: > > Hola Andrés, > > No necesariamente es indeseado ese comportamiento. > > NH decide invalidar los caches de nivel 1 o la Session porque ese SP > podría modificar la información en la base de datos haciendo, > potencialmente, inválidos los datos en memoria. > > Si vos estás seguro de que el SP es de lectura y no modifica datos, > entonces esta OK desactivarlo. > > ---------------------------------- > Carlos Peix > > 2016-05-12 11:48 GMT-03:00 Andrés Falcón <tjla...@gmail.com <javascript:>> > : > >> Publico la solución para quien pueda llegar a tener este mismo problema. >> >> Después de investigar un poco más, encontré que nhibernate cuando ejecuta >> un stored procedure, por default, realiza un invalidate (evict) de las >> entidades y colecciones de la second level cache (lo pueden ver en el >> código fuente que detallaba arriba). Ahora bien, si en el tag *sql-query* >> agregamos *<synchronize table="">* se evita este comportamiento >> indeseado; es decir, tiene que estar la etiqueta "synchronize" con >> table="", si no existe, por default "sincroniza" todas las tablas (una >> feature??, tal vez...) >> >> <sql-query ....> >> .... >> <synchronize table=*""*/> >> ... >> </sql-query> >> >> Esta info la encontré al final de este post >> https://www.link-intersystems.com/blog/2011/10/08/impact-of-native-sql-queries-on-hibernates-second-level-cache/ >> >> gracias de todos modos. >> >> Andrés Falcón. >> >> >> El miércoles, 11 de mayo de 2016, 12:52:56 (UTC-3), Andrés Falcón >> escribió: >>> >>> Buenos día grupo, acudo a uds a ver si me ayudan a solucionar un >>> problema que tengo hace unos días. >>> >>> Quisiera saber si es normal el comportamiento de siempre borrar la Caché >>> antes de ejecutar un stored procedure con *GetNamedQuery*. Me está >>> sucediendo que antes de que NHibernate ejecute el stored procedure hace un >>> Evict de los datos y las collections que tengo en la cache. >>> >>> Segun pude analizar con el código fuente, el tema está en la clase >>> *NativeSqlQueryPlan* (método CoordinateSharedCacheCleanup) crea un >>> objeto de tipo *BulkOperationCleanupAction* y es ahí donde veo que >>> agrega estas clases de la cache >>> >>> Intenté poner Cacheable(false) para la ejecución del SP y no pasó nada. >>> >>> Paso mi configuración de la caché para ver si estoy cometiendo un error >>> o me faltó configurar algo mas, dado que es la primera vez que utilizo Cache >>> >>> configuration.Cache(delegate(ICacheConfigurationProperties properties) >>> { >>> properties.Provider<NHibernate.Cache.HashtableCacheProvider>(); >>> properties.UseQueryCache = true; >>> }); >>> >>> configuration.EntityCache<FieldType>( >>> entityCacheconfig => {entityCacheconfig.Strategy = >>> EntityCacheUsage.ReadWrite; } >>> ); >>> configuration.EntityCache<FieldValue>( >>> entityCacheconfig => { entityCacheconfig.Strategy = >>> EntityCacheUsage.ReadWrite; } >>> ); >>> >>> Estoy usando nh 3.4.0.4000 >>> >>> Gracias! >>> >>> Andrés Falcón >>> >>> -- >> -- >> Para escribir al Grupo, hágalo a esta dirección: >> nhibernat...@googlegroups.com <javascript:> >> Para más, visite: http://groups.google.com/group/NHibernate-Hispano >> --- >> Has recibido este mensaje porque estás suscrito al grupo >> "NHibernate-Hispano" de Grupos de Google. >> Para anular la suscripción a este grupo y dejar de recibir sus mensajes, >> envía un correo electrónico a >> nhibernate-hispano+unsubscr...@googlegroups.com <javascript:>. >> Para acceder a más opciones, visita https://groups.google.com/d/optout. >> > > -- -- Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano@googlegroups.com Para más, visite: http://groups.google.com/group/NHibernate-Hispano --- Has recibido este mensaje porque estás suscrito al grupo "NHibernate-Hispano" de Grupos de Google. Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a nhibernate-hispano+unsubscr...@googlegroups.com. Para obtener más opciones, visita https://groups.google.com/d/optout.