2009-12-01 3 views
1
session.open 
insertIntoTODB() 
getList() 
session.close 

session.open() 
getList(); 
sesson.close() 

Кэш 1-го левого края ограничен только открытым и закрытым, а для второго последующего сеанса open getList() будет получать из БД вместо кеша?понимание спящего режима кеша первого уровня

+0

Вы можете удалить тег, не связанный с программированием. Это связано с программированием. –

+1

@bruno: имея более 500 репрессий, я считаю, что вы также можете удалить тег. – Buhb

ответ

3

Да. Кэш 1-го уровня предназначен только для сеанса. Второй вызов getList() перейдет в базу данных.

EDIT: второй вызов getList() будет отправлен в базу данных в отсутствие кеша второго уровня, также отмеченном mR_fr0g в его ответе.

+0

Если getList() является запросом, отличным от id (или полного запроса таблицы), оба запроса попадут в базу данных, но в первом случае Hibernate вернет объекты, которые уже находятся в кеше сеанса, а не построив их из набора результатов базы данных. Загрузку session.get или load вообще не нужно будет ударять по базе данных, если возвращаемый объект находится в кеше сеанса. –

3

Кэш первого уровня - это область сеанса. Второй getList() отправится в базу данных только в отсутствие second level cache. Кэш второго уровня - это сеансовый завод.

+0

На самом деле я никогда не слышал термин кеш первого уровня в Hibernate. Я знал только о втором уровне. :) –