|
|
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
Таки начальсто убедило меня, что hibernate следует пользовать. Хотя, я не очень в этом всеже уверен. Собственно, почему к уважаемому народу и обращаюся. 1) Любой объект должен иметь ID согласно hibernate. - Ecли ID нема - насколько сложно использовать суррогатные ID? - Ecли ID - текстовое значение, будут ли проблемы? - Если у меня в базе (Oracle) уже есть sequence - на сколько сложно его подключить к генерации ID? 2) Многие объекты у меня кладуться в базу через stored procedure. Достаточно сложная логика (типа защифровать пароль, записать статистику, тп). Делать триггеры или паралельно ходить через JDBC? Триггеры, откровенно, не охота... Пока усе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 19:45 |
|
||
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
1. Именно их и нужно использовать 2. Нет 3. http://www.hibernate.org/hib_docs/v3/reference/en/html/mapping.html#mapping-declaration-id-sequences По последней проблеме - http://www.hibernate.org/hib_docs/v3/reference/en/html/querysql.html Также советую помотреть на нововведения в Hibernate 3 по поводу процедур - может и удастся выкрутиться вообще без SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 20:33 |
|
||
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
Большой спасиб! Бум осваивать, вторая ссылка особо полезная, так как может решить многие проблемы из первых вопросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 20:54 |
|
||
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
Вторая ссылка способна также свести на нет все, ради чего затевалось использование Hibernate Не переусердствуйте ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 08:21 |
|
||
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
Дык понятно... Я жабой тольки-тольки начал заниматься, а так в основном базы ваял. И мне как-то неуютно стало, кады весь SQL за тебя делають... Оч.часто в SQL что-то подкрутить надо было. И одно время воше было все объесты через stored procedures класть. Ну ладно, посмотрим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2005, 17:48 |
|
||
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
Еще вопросик однако. Я тута в кишки hibernate полез и столкнулся с такой фиговиной. Вот кусок простецкого кода Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Есть ли у hibernate возможность выполнять SQL запросы, не кешируя их? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2005, 22:27 |
|
||
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
Да, не пользует народ особо hibernate. Жаль, а вопросики лезуть и лезуть.. Вот такой простой коде: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Воше, для меня, как для чела от DB как-то так немного дико выглядит, что save() ничего в базу не кладет, а тольки SQL коллекционирует, а commit() начинает в базу класть, но не коммитит, сим тольки closeSession() занимается. Не, логику, можно таку навернуть, я не против, тольки зачем функции так обзывать, чтоб народ путать. Или, считается, что народу про DB воше знать ничего не положено. Кстати, коде Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. работает нормально... Что тоже выглядет несколько странно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 21:36 |
|
||
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
Тут ничего странного нет. А представь ты делаешь в цикле 1000 session.save. И к примеру на 999 итерации все валится. Поскольку реально данные еще не закоммичены и их физически нет в БД, то откат такой транзакции происходит моментально, да и траффик+нагрузка на БД заметно ниже... Кстати, даже непосредственно в БД в рамках sql-транзакции вставки, например, РЕАЛЬНО появятся в базе только после коммита. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 09:59 |
|
||
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
Панику устроил на пустом месте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 10:49 |
|
||
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
http://www.hibernate.org/hib_docs/v3/reference/en/html/objectstate.html#objectstate-flushing авторFrom time to time the Session will execute the SQL statements needed to synchronize the JDBC connection's state with the state of objects held in memory. This process, flush, occurs by default at the following points before some query executions from org.hibernate.Transaction.commit() from Session.flush() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 11:03 |
|
||
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
Паника тут не причем. Просто функции надо было называть по другому. А то путаницу наводят однако. _Кость_ Кстати, даже непосредственно в БД в рамках sql-транзакции вставки, например, РЕАЛЬНО появятся в базе только после коммита. В зтом Вы батенька не правы, однако. Я могу и всяки selectы в рамках той-же транзакции делать. И сии selectы должны показывать, то, что я имею на данный момент, хотя это еще и не закомиченно. Для меня данные изменения уже должны РЕАЛЬНО быть в базе. Я уже привел пример выще, к чему это может привести. Я не спорю и еще раз повторю, я от базы сюды пришел. И такое наименование вызывает совсем другие ассоциации. Конечно, для чела, от базы далекого все по барабану - как-нить допетрит. Ну так зачем же других за идиотов держать? Кончено, соптимизировать хотели, а вышло, как всегда. Тоесть, создается впечатление, что если идет достаточно сурьезная работа с базой. Я имею ввиду контент базы постоянно меняется, а не просто идет просмотр через selectы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 18:41 |
|
||
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
авторИ в результате имем, что объект tst1 сохранился, а tst нет. Чо там beginTransaction сделала - непонятно (наверно rollback() =)), а вот commit всяк там SQL конечно выполнил, но закоммитить то забыл. Может и надуманая ситуация, но однако. Это неправда - как я уже писал commit() приводит к выполнению flush() для связанной сессии. Так что оба объекта должны быть записаны в БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 20:45 |
|
||
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
Может и неправда, тольки факт. Да, сommit() вызывает flush() и соответсвенно выполняет соответсвенные SQL. И объект tst1 действительно кладется в базу. Но не коммитится! А следующая функция beginTransaction откатывает базу назад, вот tst1 и пропал! Как она это там делает, я не разбирался - скорее всего надо где-то еще и autocommit в true поставить. Тады сей коде работать будет, наверно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 21:24 |
|
||
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
andrushok Дело в том что этот код и так будет работать... и транзакция, которая уже закомичена такой и останется. Проверьте ваш пример и если все так и останется как вы утверждаете - сообщите полную конфигурацию все системы (версия Oracle'а, jvm, hibernate, jdbc драйвера, код создания SessionFactory) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2005, 10:51 |
|
||
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
Так, по порядку Hibernate 3.0 (скачан недели 3 назад) jvm 1.5 (точно не помню, тоже 3 недели назад скачал) Оракл 9.2.0.4 (драйвы classes12 и ojdbc14 с него) Ось - федорино горе 3. Но это не совсем важно, я думаю. Да, SessionFactory взял из примера про котов, как и все остальное тоже... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2005, 07:06 |
|
||
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
я прикрепил пример. запустите его у себя и расскажите о результате у меня в консоль попадает следующее (hibernate 3.0.2) Код: plaintext 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. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. PS> все таки если у вас что-то с первого раза не получается - это еще не повод говорить везде что hibernate не серьезный продукт, который "отучает" людей от базы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 10:39 |
|
||
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
вот сам пример ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 10:39 |
|
||
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
Подскажите плиз в чем ошибка Имею маппинг: Код: plaintext 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. и код, где пытаюсь вытянуь все родительские записи и соответствующии им дочерние: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. В результате вылетает exception: Parent: Parent 1 net.sf.hibernate.LazyInitializationException: Failed to lazily initialize a collection ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 15:39 |
|
||
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
Судя по всему обращение к parent.getChilds() происходит после закрытия сессии в которой parent был загружен. Вот ссылка на документацию, где описывается подобная ситуация http://www.hibernate.org/hib_docs/v3/reference/en/html/performance.html#performance-fetching-lazy ЗЫ а в чем смысл такого запроса (select p from Parent as p left join p.childs as c)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 16:38 |
|
||
|
Тетерициские вопросики по Hibernate
|
|||
|---|---|---|---|
|
#18+
Cори за запрос - старый вариант. правильный - session.find("from Parent as p") Но и с ним не работало, а проблема решилась, когда в классах Parent и Child удалил методы equals и hashCode, которые сгененрились IDEA. Хотя в доках hibernate написано, что эти методы обязательно нужно переопределить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 10:15 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33061535&tid=2152282]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 389ms |

| 0 / 0 |
