Mybatis содержит очень мощную функцию кэша запросов, которую можно настроить и настроить очень легко. По умолчанию кэш не включен. Чтобы включить кэш уровня 2, вам нужно добавить строку в свой файл отображения SQL:
<cache/>
Это буквально. Эффект этого простого утверждения заключается в следующем:
1. Все выбранные операторы в файле операторов сопоставления будут кэшированы.
2. Сопоставьте все операторы вставки, обновления и удаления в файле операторов обновлять кэш.
3. Кэш будет повторно подключен с использованием наименее недавно используемого (LRU, наименьшего недавно используемого) алгоритма.
4. Согласно расписанию (например, интервал без промывки, без интервала обновления), кэш не будет обновляться в каком -либо хронологическом порядке.
5. Кэш хранит 1024 Ссылки на коллекцию списков или объект (независимо от того, что возвращает метод запроса).
6. Кэш будет считаться кэшем для чтения/записи (читаемого/записи), что означает, что поиск объекта не является общим и может быть безопасно изменен вызывающим абонент, не мешая потенциальным изменениям, сделанным другими абонентами или потоками.
Все эти свойства могут быть изменены с помощью свойств кэша. например:
<cache eviction = "fifo" flushinterval = "60000" size = "512" readonly = "true"/>
Эта более продвинутая конфигурация создает кэш FIFO и обновляется каждые 60 секунд, сохраняя 512 ссылок на объект или список результата, а возвращаемый объект считается только для чтения, поэтому изменение их между вызывающими в разные потоки приводит к конфликтам.
Доступные стратегии поиска:
По умолчанию LRU.
FlushInterval может быть установлен на любое положительное целое число, и они представляют собой разумный период времени в миллисекунд. По умолчанию не установлено, то есть нет интервала обновления, и кэш обновляется только при вызове оператора.
Размер (количество ссылок) может быть установлен на любое положительное целое число, запомнив количество объектов, которые вы кэш и количество доступных ресурсов памяти в вашей управляемой среде. Значение по умолчанию составляет 1024.
Свойство Readonly может быть установлено на TRUE или FALSE. Кэш только для чтения возвращает один и тот же экземпляр объекта кэша для всех вызывающих абонентов. Следовательно, эти объекты не могут быть изменены. Это обеспечивает важные преимущества производительности. Читаемый и писательный кэш возвращает копию объекта кэша (посредством сериализации). Это будет медленнее, но безопасно, так что по умолчанию это ложно.
Используя пользовательский кеш
В дополнение к этим пользовательским методам кеша вы также можете полностью переопределить поведение кеша, внедрив свой собственный кэш или создавая адаптеры для других сторонних сценариев кэша.
<cache type = ”com.domain.something.mycustomcache»/>
В этом примере показано, как использовать пользовательскую реализацию кэша. Класс, указанный атрибутом типа, должен реализовать интерфейс org.mybatis.cache.cache. Этот интерфейс является одним из многих сложных интерфейсов в рамках Mybatis, но это нормально просто дать ему то, что он делает.
Общественный интерфейс кэш {string getId (); int getSize (); void putobject (ключ объекта, значение объекта); Объект getObject (ключ объекта); логический хаси (объектный ключ); Object RemoveObject (ключ объекта); void clear (); ReadWritelock getReadWriteLock (); } Справочный кеш
Может быть, когда -нибудь в будущем вы захотите поделиться той же конфигурацией кэша и экземплярами в пространстве имен. В этом случае вы можете использовать элемент Cache-Ref для ссылки на другой кеш.
<cache-ref namespace = ”com.someOne.application.data.somemapper”/>