API персистентности Java - переопределение / расширение Hibernate (или аналогичного) EntityManager
В настоящее время я использую реализацию JPA в hibernate для успешного сохранения объектов в источнике данных. Теперь я хотел бы переопределить реализацию EntityManager в hibernate, в частности, функцию createQuery. Поэтому, когда создается мой контекст постоянства, вместо него будет использоваться мой настроенный EntityManager.
Это возможно? Если так, как я буду действовать?
Большое спасибо.
РЕДАКТИРОВАТЬ:
Я хотел бы реализовать свой собственный кеш. (Примечание: я рассмотрел кэш 2-го уровня Hibernate, и главный недостаток заключается в том, что "кеши никогда не узнают об изменениях, внесенных в постоянное хранилище другим приложением", поэтому я выбрал его).
Мой кэш будет содержать недавно использованные данные из источника данных. Поскольку клиенты запрашивают данные через EntityManager, я бы переопределил / расширил это так, чтобы сначала проверялся кеш. Если это не так, то EntityManager будет работать как обычно.
РЕДАКТИРОВАТЬ 2:
В качестве альтернативы я мог бы расширить QueryImpl из org.hibernate.ejb. Это позволило бы мне изменить функциональность getResultList() и getSingleResult() на следующее:
- проверить внешний кеш на данные
- если найден, вернуть результаты
- в противном случае вызовите базовый класс QueryImpl.getResultList (или QueryImpl.getSingleResult())