Почему размер персистентного контекста влияет на время запроса в Hibernate - PullRequest
2 голосов
/ 26 октября 2011
for(int i = 0; i < 10000; i++) {
  Foo foo = dao.loadFooById(i);
}
//dao.getEntityManager().clear();
Bar bar = dao.loadBarById(0);

В нынешнем виде этот код займет 200 мс для метода loadBarById(0).Если я раскомментирую закомментированную строку, это займет <1 мс.Нет никаких активных отношений между сущностями Foo и сущностями Bar.Почему размер персистентного контекста влияет на время загрузки сущности? </p>

К вашему сведению: я знаю, что у меня будут другие проблемы с большим контекстом персистентности, и что я должен управлять им, работая напартии объектов.Это только для моего собственного понимания.

1 Ответ

2 голосов
/ 26 октября 2011

PersistenceContext (Hibernate Session) - это кэш для всех видов значений и прокси.если транзакции активны, информация об откате также сохраняется где-то.Очистка персистентного менеджера / сеанса ускоряет работу кеша.

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

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