|
|
|
Кэш hibernate
|
|||
|---|---|---|---|
|
#18+
Я прочитал документацию по hibernate об кэшировании данных http://www.hibernate.org/hib_docs/v3/reference/en/html/performance.html#performance-cache Немного поэксперементировал с EHCache. Как я понял hibernate перед тем как записать.прочитать данные может хранить их только в кэше первого или второго уровня. Кэш первого уровня может хранить данные только внутри одной транзакции, а кэш второго уровня может спокой использоваться для хранения достаточно большого объема данных между транзакциями. Возникает вопрос как можно отследить запись в кэш? То бишь, если у меня будет скажем извлекаться из базы данных в одно и то же время объект А, то как определить, что hibernate будет использовать кэш, а не полезет повторно в базу данных? B=объект А (извлекаем из базы данных и записываем в кэш) C=объект А (извлекаем уже прямо из кэша) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2006, 23:34 |
|
||
|
Кэш hibernate
|
|||
|---|---|---|---|
|
#18+
Я считаю, что существует какой-то временный id при помощи которого hibernate получает доступ к объектам находящимся в cache. Можно как-нибудь этот id получить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2006, 23:50 |
|
||
|
Кэш hibernate
|
|||
|---|---|---|---|
|
#18+
У SessionFactory и Session есть методы проверки присутсвует ли указаный объект в кэше 1 и 2го уровней соответсвенно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2006, 11:53 |
|
||
|
Кэш hibernate
|
|||
|---|---|---|---|
|
#18+
Я так понял это Statistics, но ведь с помощью этого нельзя вытащить объект из кэша. Может все-таки есть метод с помощью, которого можно взять объект из cache? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2006, 16:34 |
|
||
|
Кэш hibernate
|
|||
|---|---|---|---|
|
#18+
А зачем? Hibernate сам его использует, а пользователю оставляет средства мониторинга и такие вещи как evict (т.е. убрать из кеша) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2006, 17:22 |
|
||
|
Кэш hibernate
|
|||
|---|---|---|---|
|
#18+
По-моему, Вам не стоит заботиться о том, откуда берет Hibernate конкретный объект. Если у Вас все сконфигурировано нормально (и спользование кэша включено для класса), то при первом обращении к объекту (если в кэше его нет) объект будет загружен из базы данных, а при последующих обращениях извлекаться из кэша. Чтобы принудительно загрузить объект из базы данных нужно, как было отмечено ранее в этой ветке, удалить объект из кэша при помощи evict(). В общем Hibernate делает всю работу за Вас и отслеживать, откуда был взят конкретный экземпляр (из кэша или базы данных) объекта, по-моему не стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2006, 08:24 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=59&tid=2149431]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
183ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 504ms |

| 0 / 0 |
