ibatis / mybatis кэширование в спокойном веб-сервисе - PullRequest
0 голосов
/ 27 сентября 2011

Я использую mybatis в спокойном веб-приложении Jax-RS (Джерси). Поэтому автоматически у меня нет управления сеансом или состоянием.

Вопрос: как я могу использовать функции кэширования mybatis?

1 Ответ

3 голосов
/ 27 сентября 2011

Кэширование в MyBatis очень простое. Согласно документации (стр. 42 руководства пользователя http://mybatis.googlecode.com/svn/trunk/doc/en/MyBatis-3-User-Guide.pdf)

По умолчанию кэширование не включено, за исключением локального кэширования сеанса, что повышает производительность и требуется для разрешения циклических зависимостей. Чтобы включить второй уровень кэширования, вам просто нужно добавить одну строку в ваш файл сопоставления SQL: MyBatis 3 - Руководство пользователя 6 июня 2011 г. 43

<cache/>

Буквально это все.

Типичные ловушки, которые у меня были при этом:

На маппере вы добавляете элемент кеша; если у вас есть зависимые объекты, обязательно очистите кэш при необходимости. Несмотря на то, что для вставки, обновления, удаления для элементов в сопоставлениях, которые вы установили для элемента кэша, уже выполнена очистка, иногда необходимо очищать кэш из-за обновлений / удалений / и т. Д., Определенных в различных сопоставлениях xml.

По сути, когда вы думаете о своем кэшировании, вы должны спросить себя: «Когда эта сущность изменяется, хочу ли я очистить кеш для сущности в другом отображении?» Если ответ «да», используйте элемент cache-ref, а не просто cache.

Пример со страницы 45 документа:

<cache-ref namespace=”com.someone.application.data.SomeMapper”/>
...