JavaRush /Курстар /All lectures for KY purposes /Кэш кыймылдаткычын орнотуу

Кэш кыймылдаткычын орнотуу

All lectures for KY purposes
Деңгээл , Сабак
жеткиликтүү

Кэш орнотуулары

Кайра 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"/>

Биринчи сапка көңүл бур, бул жерде кэш кыймылдаткычынын классынын аты көрсөтүлгөн. Чынында Hibernate өзүнүн ичинде кэш жасабайт, анын ордуна ал кэш кыймылдаткычын түзүү үчүн колдонулуучу интерфейстердин топтомун камсыз кылат.

Кайсы бир популярдуу ишке ашыруулар төмөнкүлөр:

  • EHCache
  • OSCache
  • SwarmCache
  • JBoss TreeCache

EHCache

Бул жадында же дискте кэш сала алат, ошондой эле кластердик кэш жасоо жана Hibernate суроо натыйжалары үчүн кошумча кэш колдоо мүмкүнчүлүктөрү бар.

OSCache

Жадында жана дискте бир JVM ичинде кэш түзүүнү колдойт, мында көптөгөн мөөнөт аяктоочулары бар жана суроо кэшин колдоо мүмкүнчүлүктөрү менен.

SwarmCache

JGroups негизделген кластердик кэш. Бул кластердик жокко чыгарууну колдонот, бирок Hibernate суроо кэштерин колдобойт.

JBoss Cache

Толугу менен транзакциялык репликаланган кластердик кэш, ошондой эле көп даректүү китепкана JGroups негизделген. Бул репликацияны же жокко чыгарууну, синхрондук же асинхрондук байланышты, ошондой эле оптимистикалык жана пессимисттик блокировкаларды колдойт. Hibernate суроо кэштерин колдойт.

Бул кыймылдаткычтардын бардыгы параллелдүү кирүү стратегияларын колдой бербейт. Реалдуу абал төмөнкү таблицада көрсөтүлгөн:

Strategy/Provider Read-only Nonstrict read-write Read-write Transactional
EHCache X X X
OSCache X X X
SwarmCache X X
JBoss Cache 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"
/>

Бул жерде сен жалпы жана ар бир түзүлүш үчүн кэш параметрлерин орното аласың. Толугу менен маалыматты расмий документтен окугула.

Кэш статистикасын талдоо

Ошондой эле кэш механизминин канчалык жакшы орнотулганын текшерүү зарылчылыгы болушу мүмкүн. Бул үчүн атайын Hibernate Statistics объектин камсыз кылат.

Мисалы:


Statistics statistics = session.getSessionFactory().getStatistics();
CacheRegionStatistics cacheStatistics = statistics.getDomainRegionStatistics(“com.javarush.employee”);
 
long hitCount = cacheStatistics.getHitCount();
long missCount = cacheStatistics.getMissCount();
double hitRatio = (double) hitCount / (hitCount + missCount);

Бул жерде биз аны майдалап карабайбыз, себеби сен кэштин стандарттык чечимдерин колдонгонго чейин көп жылдар өтүп, аларды кол менен жакшыртуу зарылчылыгы пайда болот. Кызыгы, балким, ушул сыяктуу бир окуядан улам бул комментарий алынгандыр:


// Урматтуу программист:
// Бул подпрограмманы “оптималдаштыруу” менен бүтө турган болгондо
// жана бул канчалык чоң ката болгонун түшүнүп жатканда,
// келечектеги жигитке эскертүү катары ылдагы эсептөөчүлөрдүн санын көбөйтө көр:
// бул жерде сарпталган сааттар саны = 42
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION