![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 11 Всего: 151 |
Допустим, есть такой код:
В какой момент произойдет реальное обращение к базе, т.е. сетевое взаимодействие - на строчке 1, 2 или 3? Или это зависит от конфигурации Hibernate'а? Это сообщение отредактировал(а) Lamer George - 8.6.2006, 10:23 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
tux |
|
||||||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 11 Всего: 132 |
Вообще, насколько я понимаю, Hibernate собирает все запросы в пул и по исполнении transaction.commit() запускает их все пачкой. То есть, все выполняется в строчке 2. Точно не в строчке 3, там код под это не заточен. Но, поскольку, это строчка 2, то здесь есть нюансы. Вообще говоря, вызов
и
это не одно и то же. Если тебя в принципе эти нюансы не волнуют, то на этом остановимся. Если больше никто ничего умного не напишет, завтра утром выдам продолжение. ![]() |
||||||
|
|||||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 11 Всего: 151 |
Вообще говоря, волнуют. Меня серьезно интересует эта технология - и идеологически, и в прикладном плане (она, как мне кажется, довольно органично вписалась бы в наше решение). Да еще и EJB3, как я понял, заточены под работу с Hibernate. И у меня масса вопросов, но задавать их все тут будет просто бестактно ![]() Жду с нетерпением. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 11 Всего: 132 |
Честно говоря я и сам не понял что это хотел сказать про методы.
![]() Насчет того, что обращение к базе будет в строке 2, это верно. Уже давно в голове витает мысль написать несколько статей по Hibernate поскольку к нему интерес довольно велик, однако этому мешает отсутствие свободного времени. Надеюсь через некоторое время я это вре-таки сделаю. Тем более актуально, что на русском языке материалов мало. |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 11 Всего: 151 |
Спасибо за ответ.
Да. Я тут подумал о том, что можно сделать выжимку из их Getting Started, и положить в FAQ (со ссылкой, разумеется). Правда, там не всё понятно - например, я так и не понял, что они хотели сказать об отношениях many-to-many. Но спрашивать пока нет смысла, сначала покурю мануал ![]() -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 5 Всего: 77 |
Честно говоря.... кажется что в строке 1 могут быть тоже обращения к базе...
То есть ФИЗИЧЕСКИ данные будут передаваться СУБД и она будет выполнять инструкции. Но не комиттить. А при роллбэке произойдёр полный роллбэк объектный + банальный роллбэк в СУБд для данных, которые успели обработать. Надо это как-то протестить. Но мне кажется, что в хибернейте предусмотрели такую асинхронность в целях производительности... -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 5 Всего: 77 |
Честно говоря.... кажется что в строке 1 могут быть тоже обращения к базе...
То есть ФИЗИЧЕСКИ данные будут передаваться СУБД и она будет выполнять инструкции. Но не комиттить. А при роллбэке произойдёр полный роллбэк объектный + банальный роллбэк в СУБд для данных, которые успели обработать. Надо это как-то протестить. Но мне кажется, что в хибернейте предусмотрели такую асинхронность в целях производительности... Скорее ВМЕСТО идеи энтити бинов 2.0(мать их за ногу!!!) они слизали для этих целей идею хибернейта. То есть, фактически, сделали СВОЙ хибернейт по образу и подобию... ![]() ЗЫ: На следующей неделе буду пробовать джибосс 4.0.4 и еджиби 3.0 в деле. Если что-то путёвое выйдет - расскажу. -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 11 Всего: 151 |
Протестить, конечно, можно. Но хотелось бы быть уверенным. Ведь результат моего теста не гарантирует, что это поведение будет всегда одинаковым. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 5 Всего: 77 |
А по идее и не должно быть.... Если я верно предполагаю. Если много операций - наверное, начнёт раньше сбрасывать, чтоб потом огромный кусок данных не гнать по сети за один раз. Это на совести реализаторов хибернейта по идее - в зависимости от чего и когда происходит сброс в СУБД. И, скорее всего оно как-то зависит от нагрузки, частоты однотипных обращений и проч. и проч. А в доке у них это явно не оговорено? Может где-то в мэйллистах есть? Хотя, не исключено, что они не заморачивали себе голову и всё происходит при коммите. -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 11 Всего: 151 |
Пока не нашел, но где-то наверняка должно быть. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 11 Всего: 132 |
Я тоже на самом деле не уверен, что там вызовов никогда не бывает. Вероятно, что все зависит от реализации адаптера Hibernate для конкретной СУБД. В Hibernate можно включить выдачу выполняемых запросов на консоль. Так вот, для PostgreSQL, MySQL и Hypersonic перечень выполняемых запросов вываливается только после выполнения commit(). Хотя надо бы, конечно, заглянуть в код чтобы точно знать механизм того, как обрабатывается транзакция. |
|||
|
||||
pvo |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 7.10.2005 Где: Мск Репутация: нет Всего: 7 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java tools & IDE's | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |