|
|
|
Как правильно управлять сессиями в Hibernate Dao?
|
|||
|---|---|---|---|
|
#18+
Привет всем ... Я использовал в Hibernate dao session-per-operation pattern или скорее anti-pattern В каждом методе открывал и там же закрывал сессию , транзакции использовал только при save или load , а в Hibernate.cfg.hml прописал <property name="connection.autocommit">true</property> т.е. транзакции коммитились автоматом Главный минус всего этого - я "избавил" себя от такой возможности , как lazy-загрузка обьектов Хочу переделать Прочитал эту статью http://www.hibernate.org/328.html и http://www.hibernate.org/42.html Все как бы понятно Скачал caveatemptor , посмотрел как там сделан HibernateUtil и GenericDao Скопировал HibernateUtil.java в свой проект и в свой GenericDao(от которого наследуются все остальные dao) внес строки public void setSession(Session session) { this.session = session; } protected Session getSession() { if (session == null){ session = HibernateUtil.getSessionFactory().getCurrentSession(); } return session; } но не работает , пишет , что нельзя создать createCriteria не начав перед этим транзакцию... Добавил в каждый метод Transaction tx = getSession().beginTransaction(); ... тело метода tx.commit(); В итоге коммит транзакции закрывает сессию и я получаю LazyInitializationException. Прочитал про AOP(перехват методов) там в принципе то же самое делается и я опять буду терять сессию. Pattern Open session in view на сколько я понял плохо работает с кешом, при работе с обьектами в нескольких request-ах и вообще меня пугает. Как вы считаете, следует ли использовать этот паттерн? Вопрос: Как правильно управлять сессиями в Hibernate Dao? Заранее благодарен за любую помощь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 19:48:17 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2145302]: |
0ms |
get settings: |
18ms |
get forum list: |
23ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
64ms |
get topic data: |
13ms |
get first new msg: |
11ms |
get forum data: |
4ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 339ms |
| total: | 550ms |

| 0 / 0 |
