தேக்ககத்தை அமைத்தல்

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
  • ஸ்வர்ம் கேச்
  • JBoss TreeCache

EHCache

இது நினைவகம் அல்லது வட்டில், அதே போல் கிளஸ்டர் கேச்சிங்கிலும் தேக்ககப்படுத்தப்படலாம், மேலும் ஹைபர்னேட் வினவல் முடிவுகளின் விருப்பத் தற்காலிக சேமிப்பையும் ஆதரிக்கிறது.

OSCache

காலாவதி கொள்கைகள் மற்றும் வினவல் கேச் ஆதரவுடன் அதே JVM இல் நினைவகம் மற்றும் வட்டு தேக்ககத்தை ஆதரிக்கிறது.

ஸ்வர்ம் கேச்

JGroups அடிப்படையிலான கிளஸ்டர் கேச். இது கிளஸ்டர்டு செல்லாததாக்குதலைப் பயன்படுத்துகிறது ஆனால் ஹைபர்னேட் வினவல் தற்காலிக சேமிப்பை ஆதரிக்காது.

JBoss கேச்

JGroups மல்டிகாஸ்ட் லைப்ரரியை அடிப்படையாகக் கொண்ட முழுப் பரிவர்த்தனை நகலெடுக்கப்பட்ட கிளஸ்டர்டு கேச். இது பிரதியெடுப்பு அல்லது செல்லாததாக்குதல், ஒத்திசைவு அல்லது ஒத்திசைவற்ற தொடர்பு மற்றும் நம்பிக்கையான மற்றும் அவநம்பிக்கையான பூட்டுதல் ஆகியவற்றை ஆதரிக்கிறது. ஹைபர்னேட் வினவல் கேச் ஆதரிக்கப்படுகிறது.

இந்த இயந்திரங்கள் அனைத்து இணையான அணுகல் உத்திகளையும் ஆதரிக்காது. உண்மையான நிலைமை கீழே உள்ள அட்டவணையில் விவரிக்கப்பட்டுள்ளது:

உத்தி/வழங்குபவர் படிக்க மட்டும் கண்டிப்பான வாசிப்பு-எழுதுதல் படிக்க-எழுத பரிவர்த்தனை
EHCache எக்ஸ் எக்ஸ் எக்ஸ்
OSCache எக்ஸ் எக்ஸ் எக்ஸ்
ஸ்வர்ம் கேச் எக்ஸ் எக்ஸ்
JBoss கேச் எக்ஸ் எக்ஸ்

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"
/>

இங்கே நீங்கள் கேச்சிங் அமைப்புகளை பொதுவாக மற்றும் ஒவ்வொரு நிறுவனத்திற்கும் தனித்தனியாக உள்ளமைக்கலாம். அதிகாரப்பூர்வ ஆவணத்தில் மேலும் படிக்கவும் .

கேச்சிங் புள்ளிவிவரங்களின் பகுப்பாய்வு

கேச்சிங் மெக்கானிசம் எவ்வளவு சிறப்பாக கட்டமைக்கப்பட்டுள்ளது என்பதை நீங்கள் சரிபார்க்க வேண்டும். Hibernate இதற்காக ஒரு சிறப்பு புள்ளியியல் பொருளை வழங்குகிறது.

உதாரணமாக:

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