|
|
|
Hibbernate, проблема с connection
|
|||
|---|---|---|---|
|
#18+
Добрый день, пишу приложения на сервлетах (tomcat), не могу разобраться с connections. Имеется 9 DAO объектов, для доступа к каждой из таблиц БД (все реализуют один интерфейс). Работаю с ними по одной схеме: при первом обращении создается интсанс DAO класса, при последующих (вплоть до завершения работы программы) возвращается этот инстанс, т.е. за все время работы не более одного DAO инстанса на таблицу (это важно). Вот код типичного DAO класса: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. Проблема в том, что не могу разобраться как раздавать коннекты, за время жизни этих классов. Пробовал делать один коннект для всех DAO, а при каждом обращении создавать и закрывать транзакцию -- не потокобезопасно, и hibernate ругался nested transactions not supported. Пробовал каждый раз, для обращения создавать connection, а после его закрывать -- тогда проблема с LAZY. Как в коде выше, программа в принципе работает, но иногда ругается на Illegal attempt to associate a collection with two open sessions Ошибка при QuestionsDAO::updateObj(Object obj),что вполне очевидно. Прошу объяснить логику работы с connection, ибо я не понимаю как ими оперировать. В документации, примеров с долгоживущими коннектами. Благодарю за понимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2014, 16:30 |
|
||
|
Hibbernate, проблема с connection
|
|||
|---|---|---|---|
|
#18+
Что-то не увидел в примере DAO ничего связанного с Connection. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 12:21 |
|
||
|
Hibbernate, проблема с connection
|
|||
|---|---|---|---|
|
#18+
Я решал эту проблему тем, что создавал Сессию в каждой форме, и в передавал ее в методы DAO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2014, 10:39 |
|
||
|
Hibbernate, проблема с connection
|
|||
|---|---|---|---|
|
#18+
LinuxAwake, в учебниках полно примеров, но открывать отдельную сессию для каждой таблицы - такого точно нигде не посоветуют. Я уж боюсь спрашивать насчет уникальности DAO (и открытых внутри них сессий) относительно потоков автор за все время работы не более одного DAO инстанса на таблицу (это важно). Вот несколько наводящих вопросов: - кто обеспечивает коннект (контейнер/приложение) - конфигурация хибернейт (указаны ли какие-нибудь фабрики) - в чем цель длинных сессий (и есть ли понимание, что сессия != коннект) - стоит ли самостоятельно управлять транзкациями, может, начать с чего-то готового (jee, spring и т.п.) Может, и удастся помочь, если будут ответы. Пока что напрашивается единственный совет - читать учебник. Или использовать хибернейт кодогенератор - он сделатет 99% всей работы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2014, 13:08 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=177&tid=2127261]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
75ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 410ms |

| 0 / 0 |
