Discussion:
[nhusers] Problem with working cache 2 level. Entity not found in cache
i***@gmail.com
2018-06-07 10:07:25 UTC
Permalink
I am using Nhibernate 3.3.0.4000.
I am executing code:


















*using System;using System.Collections.Generic;using System.Linq;using
System.Text;using System.Threading.Tasks;using BusinessModel.Database;using
log4net;using BusinessModel.TechPlan;namespace TestCacheNHibernate{
class Program { public static readonly ILog log =
LogManager.GetLogger(typeof(Program)); static void Main(string[]
args) {
log4net.Config.DOMConfigurator.Configure(); ISessionFactory
factory=BuildSessionFactory(); ISession s=
factory.OpenSession("HOST=localhost;PORT=5432;PROTOCOL=3;DATABASE=data;USER
ID=postgres;Password=password;POOLING=True;CONNECTIONLIFETIME=1000;MINPOOLSIZE=1;MAXPOOLSIZE=1024;COMMANDTIMEOUT=200;INTEGRATED
SECURITY=False;"); *
* s.BeginTransaction();*












* IList<BusinessModel.Base.CTSocrbase> test=s.CreateQuery("from
CTSocrbase where
Level='5'").SetCacheable(true).SetCacheMode(CacheMode.Normal).List<BusinessModel.Base.CTSocrbase>();
s.Commit(); s.CloseSession();
s.OpenSession("HOST=localhost;PORT=5432;PROTOCOL=3;DATABASE=data;USER
ID=postgres;Password=password;POOLING=True;CONNECTIONLIFETIME=1000;MINPOOLSIZE=1;MAXPOOLSIZE=1024;COMMANDTIMEOUT=200;INTEGRATED
SECURITY=False;"); s.BeginTransaction();
IList<BusinessModel.Base.CTSocrbase> test2 = s.CreateQuery("from CTSocrbase
where
Level='5'").SetCacheable(true).SetCacheMode(CacheMode.Normal).List<BusinessModel.Base.CTSocrbase>();
straper.Commit(); straper.CloseSession(); } }}*After
this code had been executed, I had looked in log file and had found
information:
] DEBUG NHibernate.Impl.SessionImpl - transaction completion
2018-06-07 16:18:04,919 [1] DEBUG NHibernate.Impl.SessionImpl -
[session-id=942d6db3-cde5-47b6-80cf-1100317ed849] opened session at
timestamp: -9223372036854775808, for session factory:
[/738a254ad4784858ab92df0a44a3f0c5]
2018-06-07 16:18:05,761 [1] DEBUG NHibernate.Transaction.AdoTransaction -
Begin (Unspecified)
2018-06-07 16:18:06,119 [1] DEBUG NHibernate.Engine.Query.QueryPlanCache -
located HQL query plan in cache (from CTSocrbase where Level='5')
2018-06-07 16:18:06,119 [1] DEBUG NHibernate.Impl.SessionImpl - setting
cache mode to: Normal
2018-06-07 16:18:06,119 [1] DEBUG NHibernate.Engine.Query.QueryPlanCache -
located HQL query plan in cache (from CTSocrbase where Level='5')
2018-06-07 16:18:06,119 [1] DEBUG NHibernate.Engine.Query.HQLQueryPlan -
find: from CTSocrbase where Level='5'
2018-06-07 16:18:06,119 [1] DEBUG NHibernate.Engine.QueryParameters - named
parameters: {}
2018-06-07 16:18:06,119 [1] DEBUG NHibernate.Cache.StandardQueryCache -
checking cached query results in region:
'NHibernate.Cache.StandardQueryCache'; sql: select ctsocrbase0_.id as
id32_, ctsocrbase0_.kod_t_st as kod2_32_, ctsocrbase0_.socrname as
socrname32_, ctsocrbase0_.scname as scname32_, ctsocrbase0_.level as
level32_ from base.socrbase ctsocrbase0_ where ctsocrbase0_.level='5';
parameters: []; named parameters: {}
2018-06-07 16:18:06,119 [1] DEBUG NHibernate.Cache.StandardQueryCache -
Checking query spaces for up-to-dateness [base.socrbase]
2018-06-07 16:18:06,119 [1] DEBUG NHibernate.Cache.StandardQueryCache -*
returning cached query results for*: sql: select ctsocrbase0_.id as id32_,
ctsocrbase0_.kod_t_st as kod2_32_, ctsocrbase0_.socrname as socrname32_,
ctsocrbase0_.scname as scname32_, ctsocrbase0_.level as level32_ from
base.socrbase ctsocrbase0_ where ctsocrbase0_.level='5'; parameters: [];
named parameters: {}
2018-06-07 16:18:06,135 [1] DEBUG
NHibernate.Event.Default.DefaultLoadEventListener - loading entity:
[BusinessModel.Base.CTSocrbase#141]
2018-06-07 16:18:06,135 [1] DEBUG
NHibernate.Event.Default.DefaultLoadEventListener - attempting to resolve:
[BusinessModel.Base.CTSocrbase#141]
2018-06-07 16:18:06,135 [1] DEBUG
NHibernate.Event.Default.DefaultLoadEventListener - *object not resolved in
any cache: *[BusinessModel.Base.CTSocrbase#141]
2018-06-07 16:18:06,135 [1] D


This is mapping of class CTSocrBase
























*<?xml version="1.0" encoding="utf-8" ?><hibernate-mapping
xmlns="urn:nhibernate-mapping-2.2"
assembly="BusinessModel"
namespace="BusinessModel.Base" > <class
name="CTSocrbase" table="base.socrbase"> <cache usage="read-only"/>
<id name="Id" column="id" type="long" unsaved-value="-1"> <generator
class="assigned"> </generator> </id> <property name="Kod"
access="property" type="String"> <column name="kod_t_st"/>
</property> <property name="Socrname" access="property"
type="String"> <column name="socrname"/> </property> <property
name="Scname" access="property" type="String"> <column
name="scname"/> </property> <property name="Level" access="property"
type="String"> <column name="level"/> </property>
</class></hibernate-mapping>*
I had tuned cache second level and query cache. This is my config file
:




































*<?xml version="1.0" encoding="utf-8" ?><configuration>
<configSections> <section name="hibernate-configuration"
type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/> <section
name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections> <hibernate-configuration
xmlns="urn:nhibernate-configuration-2.2"> <session-factory>
<property
name="connection.driver_class">NHibernate.Driver.NpgsqlDriver</property>
<property
name="dialect">NHibernate.Dialect.PostgreSQLDialect</property>
<property name="connection.connection_string">
HOST=localhost;PORT=5432;PROTOCOL=3;DATABASE=data;USER
ID=postgres;Password=password;POOLING=True;CONNECTIONLIFETIME=1000;MINPOOLSIZE=1;MAXPOOLSIZE=1024;COMMANDTIMEOUT=200;INTEGRATED
SECURITY=False; </property> <property
name="cache.use_query_cache">true</property> <property
name="cache.provider_class">NHibernate.Cache.HashtableCacheProvider</property>
<property name="cache.use_second_level_cache">true</property> <mapping
assembly="BusinessModel"/> </session-factory>
</hibernate-configuration> <log4net> <appender name="LogToFile"
type="log4net.Appender.FileAppender"> <file value="D:/path/log.log"
/> <appendToFile value="true" /> <layout
type="log4net.Layout.PatternLayout"> <conversionPattern value="%d
[%t] %-5p %c - %m%n" /> </layout> </appender> <logger
name="MyClassLibraryLogger"> <level value="DEBUG" /> </logger>
<root> <priority value="DEBUG" /> <appender-ref ref="LogToFile"
/> </root> </log4net></configuration>*
--
You received this message because you are subscribed to the Google Groups "nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to nhusers+***@googlegroups.com.
To post to this group, send email to ***@googlegroups.com.
Visit this group at https://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/d/optout.
Loading...