|
|
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
Что-то я читал, читал тему и нипойму в чем проблема. стартуем транзакцию. делаем че хотим, при этом флушим в бд после добавлений-удалений, так как транзакция НЕ ЗАКОМИЧЕНА дургие конекты-юзеры не увидят наших изменений. Если юзер передумает, то откатываем транзакцию и все. или у вас сессии короче чем ваша длиииная бизнес транзакция? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 19:25:12 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
Petro123, надо подумать :) В БД не сбросил, но запросы хотишь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 19:26:29 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
slipperyв смысле, что он будет искать в кеше, будет ли он искать в кеше и как он будет это делать?Ну так это обычный HQL запрос. Работает так же, как я описал выше: 1. Идет запрос к БД, формируется список полученных объектов 2. Объекты мерджатся в сессию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 19:27:45 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
Alexey Kuznetsov, да, в веб сессия хибера и транзакция только в рамках запроса HTTP-реквеста. У нас :)) несколько реквестов на бизнес транз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 19:28:18 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
Alexey KuznetsovЧто-то я читал, читал тему и нипойму в чем проблема. стартуем транзакцию. делаем че хотим, при этом флушим в бд после добавлений-удалений, так как транзакция НЕ ЗАКОМИЧЕНА дургие конекты-юзеры не увидят наших изменений. Если юзер передумает, то откатываем транзакцию и все. или у вас сессии короче чем ваша длиииная бизнес транзакция?Это классическая длинная транзакция со своими плюсами (простоа реализации) и минусами (абсолютная немасштабируеомсть). Подходит это автору или нет - вопрос к нему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 19:29:21 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
svenom, я не понял - есть класс А изменённый в хибере, но не сброшенный в БД. Что произойдёт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 19:29:42 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
хибер сравнит метку версии и ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 19:31:08 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
Petro123svenom, я не понял - есть класс А изменённый в хибере, но не сброшенный в БД. Что произойдёт?Что произойдет при каком действии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 19:31:40 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
svenom, если знаешь - ответь. Я не знаю спросил. В RTFM? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 19:34:32 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
svenomslipperyв смысле, что он будет искать в кеше, будет ли он искать в кеше и как он будет это делать?Ну так это обычный HQL запрос. Работает так же, как я описал выше: 1. Идет запрос к БД, формируется список полученных объектов 2. Объекты мерджатся в сессию. блин, ну вот почему он не реализовали при мержде объектов, что если в сессии объект с таким id со статусом "удалить", то чтоб он не попадал в выборку, по моему же логично было бы, разе нет? и сделать 2 варианта запросов, чтоб в 1 попадал, а во втором нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 19:34:34 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
Petro123svenom, я не понял - есть класс А изменённый в хибере, но не сброшенный в БД. Что произойдёт?Что произойдет при каком действии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 19:37:50 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
svenomAlexey KuznetsovЧто-то я читал, читал тему и нипойму в чем проблема. стартуем транзакцию. делаем че хотим, при этом флушим в бд после добавлений-удалений, так как транзакция НЕ ЗАКОМИЧЕНА дургие конекты-юзеры не увидят наших изменений. Если юзер передумает, то откатываем транзакцию и все. или у вас сессии короче чем ваша длиииная бизнес транзакция?Это классическая длинная транзакция со своими плюсами (простоа реализации) и минусами (абсолютная немасштабируеомсть). Подходит это автору или нет - вопрос к нему. Классическая длинная транзакция не вариант как мне кажется, потому, что параллельно в веб приложении таких транзакций может быть открыто 1000 и более и открыты они могут быть на часы, насколько я понимаю это неимоверная нагрузка на СУБД так же и на память самого сервера. Если я ошибаюсь и у кого-то есть какие-нибудь сведения или информация по этому поводу с огромным удовольствием выслушаю. Но я всегда слышал, и где-то читал, что делать так в веб приложении в котором могут параллельно работать тысячи или десятки тысяч пользователей, это значит "убить" проект. Хотелось бы мне ошибаться..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 19:38:39 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
slipperysvenomпропущено... Это классическая длинная транзакция со своими плюсами (простоа реализации) и минусами (абсолютная немасштабируеомсть). Подходит это автору или нет - вопрос к нему. Классическая длинная транзакция не вариант как мне кажется, потому, что параллельно в веб приложении таких транзакций может быть открыто 1000 и более и открыты они могут быть на часы, насколько я понимаю это неимоверная нагрузка на СУБД так же и на память самого сервера. Если я ошибаюсь и у кого-то есть какие-нибудь сведения или информация по этому поводу с огромным удовольствием выслушаю. Но я всегда слышал, и где-то читал, что делать так в веб приложении в котором могут параллельно работать тысячи или десятки тысяч пользователей, это значит "убить" проект. Хотелось бы мне ошибаться.....Все верно. На каждую такую транзакцию нужен отдельный коннекшн со всеми вытекающими. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 19:40:30 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
slippery, если хибер не умеет, то очень просто - он не СУБД и умеет в себе копаться только ограниченно . Т.е. ломай DDL командами сколько угодно, но не перезапрашивай . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 19:41:57 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
slipperysvenomпропущено... Ну так это обычный HQL запрос. Работает так же, как я описал выше: 1. Идет запрос к БД, формируется список полученных объектов 2. Объекты мерджатся в сессию. блин, ну вот почему он не реализовали при мержде объектов, что если в сессии объект с таким id со статусом "удалить", то чтоб он не попадал в выборку, по моему же логично было бы, разе нет? и сделать 2 варианта запросов, чтоб в 1 попадал, а во втором нет. Ну опять таки - все корректно отработает, как вы ожидаете, если вы сделаете flush() перед исполнением запроса. Вы flush() делать не хотите, Хибер тут ни при чем. Вы у него попросили вернуть список определнных объектов - он вам их и вернул. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 19:44:15 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
svenom, вопрос чуть не по теме, а чем session.createQuery от session.find() глобально отличается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 19:46:30 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
slipperysession.createQuery от session.find() глобально отличается?Метода find либо нет, либо он диприкейтед ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 19:48:55 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
svenom, Хибер то ни при чём я согласен. Веб-ТЗ при чём. И программисты, которые ленивые стали. IDE им подавай и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 19:50:51 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
Petro123, в общем, автор! Тайм-аут и объясни заказчику. Либо долго писать чтобы хибер был импотентом прослойкой до БД. Либо менять ТЗ уменьшив УНИВЕРСАЛЬНОСТЬ как зло для IT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 19:53:28 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
Petro123Petro123, в общем, автор! Тайм-аут и объясни заказчику. Либо долго писать чтобы хибер был импотентом прослойкой до БД. Либо менять ТЗ уменьшив УНИВЕРСАЛЬНОСТЬ как зло для IT. по глобальной концепции уменьшать универсальность нельзя, поэтому видимо "долго или нудно писать руками" вообщем-то я уже смирился с этой мыслю) единственное не хотелось бы написать криво, так как подобное раньше мне делать не приходилось, потому и спрашивал какие есть подходы, варианты, паттерны, фрэймворки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 20:00:23 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
slippery, ok универсальность проще не на тонком клиенте и не на веб. Но есть минусы! В параллельной теме тоже ищу сабж. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 20:23:40 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
slipperyДобрый день, есть задача: Открываю сессию с hibernate, начинаю транзакцию, создаю 2 объекта и делаю им save. slippery, как вы привели ТЗ в соседнем топике, так там все нормально, грамотно и просто. Про HQL это заказчик так сказал или вы сами? View не должен работать с СУБД. Между ними еще есть слой DAO и Service и не забываем про модель. Т.е. ваш пользователь в своих вкладках работает с моделью, при необходимости подгружая данные из СУБД. Вы реализуете все операции типа delete/insert в памяти (можно в сервисах, если сделать цикл жизни не singleton, а как у сессии), а далее при запросе от пользователя просто сохраняете все изменения в БД. Вкладки работают только с сервисами и моделями, что и позволяет нам утвреждать, что они ничего друг от друге не знают. Собственно, я похожую задачу решал, только в desktop приложении, что для вас совершенно не важно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2012, 20:33:27 |
|
||
|
Hibernate, работа с Session
|
|||
|---|---|---|---|
|
#18+
Теперь понял. Тогда остается еще такое решение: делаете маркерное поле и выборки делаете с учетом маркерного поля, что бы другие коннекты не тащили "логически незакомиченные" данные. Что бы упростить написание запросов, таблицы можно вьюхами обернуть, которые автоматом отфильтруют данные. Я один раз похожее решение использовал: флажок "IsDeleted" который приходилось постоянно иметь ввиду при написании запросов, муторно, но другого выхода думаю нету. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2012, 08:18:12 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37614682&tid=2132841]: |
0ms |
get settings: |
8ms |
get forum list: |
25ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
73ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 354ms |
| total: | 553ms |

| 0 / 0 |
