Должен ли я использовать Hibernate 2-го уровня кэширования? - PullRequest
4 голосов
/ 01 августа 2011

У меня есть объект домена, который находится в определенном состоянии, и после определенного события, обрабатываемого объектом службы, мне нужно проверить все экземпляры, соответствующие этому состоянию.Это событие может происходить довольно часто, поэтому выполнение запроса гибернации каждый раз будет неэффективным.Таким образом, у меня есть коллекция из них, которую я храню при запуске и поддерживаю при необходимости.

Мой вопрос: если бы я настроил кэш второго уровня гибернации, смогу ли я внести следующие изменения в мой код, не заботясь о производительности?

to:

public void handleEvent(SomeEvent someEvent) {
    for (Entity entity : dao.getSomeEventsByCriteria(criteria)) {
         // evaluate each entity for required changes. update state as needed
         // persist any changes
    }
}

По сути, я бы предпочел использовать DAO исключительно вместо того, чтобы поддерживать набор упомянутых соответствующих объектов в моем сервисе.

Ответы [ 2 ]

1 голос
/ 02 августа 2011

Да, это именно для чего нужен кэш второго уровня / кеш запросов . Hibernate справится с этим более последовательно и эффективно, чем вы. Ваш профилировщик поможет вам настроить кеш для соответствия вашим параметрам. Вы сделали профиль приложения, прежде чем пытались оптимизировать его, верно?

0 голосов
/ 02 августа 2011

Похоже, если вы включите кэш запросов и кэш второго уровня, то он должен работать нормально.http://www.javalobby.org/java/forums/t48846.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...