కాషింగ్‌ని సెటప్ చేస్తోంది

hibernate.cfg.xml ఫైల్‌లోని మా కాషింగ్ సెట్టింగ్‌లకు తిరిగి వెళ్దాం:

<property name="hibernate.cache.provider_class" value="net.sf.ehcache.hibernate.SingletEhCacheProvider"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.use_query_cache" value="true"/>

మొదటి పంక్తికి శ్రద్ధ వహించండి - ఇది కాషింగ్ ఇంజిన్ క్లాస్ పేరును కలిగి ఉంటుంది. హైబర్నేట్ వాస్తవానికి అంతర్గతంగా కాషింగ్‌ను అమలు చేయదు, బదులుగా ఇది మీ స్వంత కాషింగ్ ఇంజిన్‌ను అమలు చేయగల ఇంటర్‌ఫేస్‌ల సమితిని అందిస్తుంది.

జనాదరణ పొందిన అమలులలో ఇవి ఉన్నాయి:

  • EHCache
  • OSCache
  • SwarmCache
  • JBoss TreeCache

EHCache

ఇది మెమరీలో లేదా డిస్క్‌లో, అలాగే క్లస్టర్ కాషింగ్‌లో కాష్ చేయబడుతుంది మరియు హైబర్నేట్ ప్రశ్న ఫలితాల ఐచ్ఛిక కాష్‌కు కూడా మద్దతు ఇస్తుంది.

OSCache

రిచ్ గడువు విధానాలు మరియు ప్రశ్న కాష్ మద్దతుతో అదే JVMలో మెమరీ మరియు డిస్క్ కాషింగ్‌కు మద్దతు ఇస్తుంది.

SwarmCache

JGroupల ఆధారంగా క్లస్టర్ కాష్. ఇది క్లస్టర్డ్ ఇన్‌వాలిడేషన్‌ని ఉపయోగిస్తుంది కానీ హైబర్నేట్ క్వెరీ కాష్‌కి మద్దతు ఇవ్వదు.

JBoss కాష్

JGroups మల్టీక్యాస్ట్ లైబ్రరీ ఆధారంగా కూడా పూర్తి లావాదేవీల ప్రతిరూపమైన క్లస్టర్డ్ కాష్. ఇది రెప్లికేషన్ లేదా ఇన్‌వాలిడేషన్, సింక్రోనస్ లేదా ఎసిన్క్రోనస్ కమ్యూనికేషన్ మరియు ఆశావాద మరియు నిరాశావాద లాకింగ్‌కు మద్దతు ఇస్తుంది. హైబర్నేట్ ప్రశ్న కాష్‌కు మద్దతు ఉంది.

ఈ ఇంజిన్‌లు అన్ని సమాంతర యాక్సెస్ వ్యూహాలకు మద్దతు ఇవ్వవు. వాస్తవ పరిస్థితి క్రింది పట్టికలో వివరించబడింది:

వ్యూహం/ప్రదాత చదవడానికి మాత్రమే కఠినమైన చదవడం-వ్రాయడం చదువు రాయి లావాదేవీల
EHCache X X X
OSCache X X X
SwarmCache X X
JBoss కాష్ X X

EHCache కాన్ఫిగరేషన్ ఉదాహరణ

EHCache ఇంజిన్ ehcache.xml అని పిలువబడే దాని స్వంత కాన్ఫిగరేషన్ ఫైల్‌ను కలిగి ఉంది. అటువంటి ఫైల్ యొక్క సుమారు కంటెంట్:

<diskStore path="java.io.tmpdir"/>

<defaultCache
    maxElementsInMemory = "1000"
    eternal = "false"
    timeToIdleSeconds = "120"
    timeToLiveSeconds = "120"
    overflowToDisk = "true"
/>

<cache name = "Employee"
    maxElementsInMemory = "500"
    eternal = "true"
    timeToIdleSeconds = "0"
    timeToLiveSeconds = "0"
    overflowToDisk = "false"
/>

ఇక్కడ మీరు కాషింగ్ సెట్టింగ్‌లను సాధారణంగా మరియు ప్రతి ఎంటిటీకి విడిగా కాన్ఫిగర్ చేయవచ్చు. అధికారిక డాక్యుమెంటేషన్‌లో మరింత చదవండి .

కాషింగ్ గణాంకాల విశ్లేషణ

మీరు కాషింగ్ మెకానిజం ఎంత బాగా కాన్ఫిగర్ చేయబడిందో కూడా తనిఖీ చేయాలి. హైబర్నేట్ దీని కోసం ప్రత్యేకంగా ఒక ప్రత్యేక గణాంకాల వస్తువును అందిస్తుంది.

ఉదాహరణ:

Statistics statistics = session.getSessionFactory().getStatistics();
CacheRegionStatistics cacheStatistics = statistics.getDomainRegionStatistics(“com.codegym.employee”);

long hitCount = cacheStatistics.getHitCount();
long missCount = cacheStatistics.getMissCount();
double hitRatio = (double) hitCount / (hitCount + missCount);

మేము దీని గురించి వివరంగా చెప్పము, ఎందుకంటే మీరు ప్రామాణిక కాషింగ్ సొల్యూషన్‌లు అయిపోవడానికి ఇంకా చాలా సంవత్సరాలు పడుతుంది మరియు వాటిని మాన్యువల్‌గా మెరుగుపరచాలి. మార్గం ద్వారా, ఈ వ్యాఖ్య ఇలాంటి కేసు నుండి సంగ్రహించబడి ఉండవచ్చు:

// Dear programmer:
// When you're done "optimizing" this routine
// and realize how big of a mistake it was to do this,
// please increment the counter at the bottom as a warning
// for the next guy:
// number_of_hours_spent_here = 42