|
|
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
Отношусь к транзакции как к атомарной операции, которую можно откатить к сессии отношусь как к сеансу когда объект подключен в БД и любые изменения в подключенном объекте проростают в бд. хотелось бы узнать отношение между сессией и транзакцией. знаю, что внутри сессии можно открывать и закрывать транзакции в любых количествах, но вроде как они не должны пересекаться между собой. То есть если транзакция открыта, то перед тем открыть следующую надо закрыть старую. а можно как-то открыть транзакцию(в какой-то сессии1) , потом сессию2 например открыть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 21:01:18 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
Можете это рассматривать это следующим образом. Сессия - множество действий с СУБД в рамках одного коннекшна. Транзакция - подмножество действий в рамках сессии, с особой ACID семантикой с точки зрения СУБД. Запустить транзакцию поверх нескольких сессий нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 23:46:10 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
cdtyjv, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 11:50:27 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
cdtyjvЗапустить транзакцию поверх нескольких сессий нельзя. Я бы не был так категоричен. То что в большинстве случаев это не имеет смысла и то что это реализуется через одно место, ещё не значит что это не возможно в принципе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 12:00:22 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
Hibernate Session это реализация паттерна Unit of Work. Чтобы понять принципиальное назначение и практическое использование, стоит ознакомиться с материалами об этом паттерне. Можно начать отсюда. http://stackoverflow.com/a/3533245 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 12:03:30 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, можно немного поподробнее отсюда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 12:03:45 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
Blazkowicz , Ок, буду изучать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 12:04:36 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
questionerможно немного поподробнее отсюда? Откуда "отсюда"? Пользуйтесь цитированием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 12:08:02 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Ваш коммент со ссылкой на stackOverfow появился одновременно с моей просьбой о подробности. А удалить форум не позволяет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 12:10:15 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
questionerВаш коммент со ссылкой на stackOverfow появился одновременно с моей просьбой о подробности. А удалить форум не позволяет. Ну, дык воизбежание цитируйте, пожалуйста. Если вопрос о том как сделать несколько сессий поверх одной транзакции, то достаточно понять что нет никаких этому ограничений. Сессия напрямую транзакцией не управляет. Это происходит через определенные абстракции, куда при должном желании можно встрять и навязать реализации своё поведение. Подозреваю что можно даже стандартными средствами через JTA UserTransaction. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 12:29:26 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
cdtyjvМожете это рассматривать это следующим образом. Сессия - множество действий с СУБД в рамках одного коннекшна. Транзакция - подмножество действий в рамках сессии, с особой ACID семантикой с точки зрения СУБД. Запустить транзакцию поверх нескольких сессий нельзя. А как же распределенные транзакции? даже я об этом знаю. BlazkowiczquestionerВаш коммент со ссылкой на stackOverfow появился одновременно с моей просьбой о подробности. А удалить форум не позволяет. Ну, дык воизбежание цитируйте, пожалуйста. Если вопрос о том как сделать несколько сессий поверх одной транзакции, то достаточно понять что нет никаких этому ограничений. Сессия напрямую транзакцией не управляет. Это происходит через определенные абстракции, куда при должном желании можно встрять и навязать реализации своё поведение. Подозреваю что можно даже стандартными средствами через JTA UserTransaction. Как-то у вас задом наперед... попробуйте запустить транзакцию, не открывая сессию) Т.е. транзакция поверх сессии (или нескольких сессий). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 13:26:12 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
IliyamКак-то у вас задом наперед... Я, пока ещё, теоретик в проктологии. Iliyamпопробуйте запустить транзакцию, не открывая сессию) Т.е. транзакция поверх сессии (или нескольких сессий). Зачем пробовать? Достаточно посмотреть исходники. В них я не нашел никаких препядствий этому. Ткни носом, если я чего-то не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 13:34:57 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
BlazkowiczIliyamКак-то у вас задом наперед... Я, пока ещё, теоретик в проктологии. Iliyamпопробуйте запустить транзакцию, не открывая сессию) Т.е. транзакция поверх сессии (или нескольких сессий). Зачем пробовать? Достаточно посмотреть исходники. В них я не нашел никаких препядствий этому. Ткни носом, если я чего-то не вижу. Так вы в проктологии теоретик или нет? Может и можно, но все равно так делать - это делать через ... короче неправильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 13:59:00 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
IliyamBlazkowiczЯ, пока ещё, теоретик в проктологии. Так вы в проктологии теоретик или нет? Проблемы с чтением? IliyamМожет и можно, но все равно так делать - это делать через ... короче неправильно. ОК. Вы перефразировали то что я написал выше. Какой вы ожидаете реакции перефразирую то что уже написано выше и повторя это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 14:06:05 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Проблемы с чтением? Проблемы с логикой? BlazkowiczОК. Вы перефразировали то что я написал выше. Какой вы ожидаете реакции перефразирую то что уже написано выше и повторя это? Я бы вообще ничего не писал, если б тему создал не начинающий. А здесь ваши упражнения в проктологии (ваша, кстати, аналогия) неуместны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 14:25:21 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
IliyamBlazkowiczПроблемы с чтением? Проблемы с логикой? Проблемы? :D IliyamЯ бы вообще ничего не писал, если б тему создал не начинающий. А здесь ваши упражнения в проктологии (ваша, кстати, аналогия) неуместны. Окай. Перефразируем. Через JTA можно поиметь несколько сессий на транзакцию без особых заморочек. С JDBC транзакцией будет немного сложнее. Но тоже реально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 14:38:15 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
IliyamЯ бы вообще ничего не писал, если б тему создал не начинающий. Это кого должно волновать? Я бы вообще ничего не писал, если бы новых тем не создавали. Ваш КО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 14:39:09 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Проблемы? :D BlazkowiczОкай. Перефразируем. Через JTA можно поиметь несколько сессий на транзакцию без особых заморочек. С JDBC транзакцией будет немного сложнее. Но тоже реально. Вы вообще помните, с чего спор пошел? Какая-то странная непоследовательность от человека, дающего много дельных советов. Можете не искать, причина уже исчерпана. Я эту писанину пишу, чтобы сказать - начинающему нужны короткие и правильные ответы в общем виде. Вариации он сам узнает, если захочет. Вы с этим согласны, надеюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 15:15:12 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
IliyamЯ эту писанину пишу, чтобы сказать - начинающему нужны короткие и правильные ответы в общем виде. Вариации он сам узнает, если захочет. Вы с этим согласны, надеюсь? Мы тут не только о начинающих заботимся но и собственный кругозор расширяем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 15:17:44 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
BlazkowiczМы тут не только о начинающих заботимся но и собственный кругозор расширяем. По-моему это простые теоретические вопросы. Кроме начинающих кругозор больше ни у кого не расширится. (ну может еще у svenoma что-нибудь расширится :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 15:48:43 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
IliyamПо-моему это простые теоретические вопросы. Для одних - простые. Для других - нет. Почему бы и не обсудить в очередной раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 15:55:42 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
BlazkowiczIliyamпопробуйте запустить транзакцию, не открывая сессию) Т.е. транзакция поверх сессии (или нескольких сессий). Зачем пробовать? Достаточно посмотреть исходники. В них я не нашел никаких препядствий этому. Ткни носом, если я чего-то не вижу. а если всё-таки попробовать то как ? куда смотреть? что писать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2013, 23:51:51 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
redwhite90а если всё-таки попробовать то как ? куда смотреть? что писать? Для начала настроить работу хибера через JTA. И управлять транзакцией руками через UserTransaction. Стартовали транзакцию. Создали сессию. Поработали. Закрыли. Создали новую сессию. Поработали. Закрыли. Закомитили UserTransaction. Если этот вариант по какой-то причине не работает, то надо почитать спринговый HibernateTransactionManager. Всё сводится к том что Session сообщает в TransactionManager о том что надо бы закомититься, или откатить, или ещё чего. А Transaction Manager уже может решать, надо оно ему. Или позже коммит вызвать и т.п. Посмотри реализацию классов JDBCTransaction и JTATransaction в Hibernate. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 10:25:32 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
redwhite90 а если всё-таки попробовать то как ? куда смотреть? что писать? спеку по JTA смотри. Мне лень, поэтому поверил Blazkowicz на слово. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 10:34:50 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
BlazkowiczcdtyjvЗапустить транзакцию поверх нескольких сессий нельзя. Я бы не был так категоричен. То что в большинстве случаев это не имеет смысла и то что это реализуется через одно место, ещё не значит что это не возможно в принципе. IliyamBlazkowiczпропущено... Я, пока ещё, теоретик в проктологии. пропущено... Зачем пробовать? Достаточно посмотреть исходники. В них я не нашел никаких препядствий этому. Ткни носом, если я чего-то не вижу. Так вы в проктологии теоретик или нет? Может и можно, но все равно так делать - это делать через ... короче неправильно. Вся суть спора. Iliyam, чтение по диагонали - не ваш конек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 11:07:37 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
Озверин Вся суть спора. Iliyam, чтение по диагонали - не ваш конек. Да не об этом был спор! Я же сам написал свеному про распределенные транзакции. Т.е. я не спорил про несколько сессий в транзакции. Я спорил о том, что нельзя открыть транзакцию, не открыв сессию. Но в данном случае я оказался неправ, т.к. транзакция в данном случае выходит за рамки какой-то определенной БД. Хотя я бы еще поспорил, что в данном случае называть транзакцией... момент, когда инициируется какой-то набор операций, или когда идет именно сохранение результата в БД. Но от этого уже мало толку, как назвали, так и назвали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 11:24:41 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
IliyamДа не об этом был спор! Я же сам написал свеному про распределенные транзакции. Т.е. я не спорил про несколько сессий в транзакции. Я спорил о том, что нельзя открыть транзакцию, не открыв сессию. Но в данном случае я оказался неправ, т.к. транзакция в данном случае выходит за рамки какой-то определенной БД. Хотя я бы еще поспорил, что в данном случае называть транзакцией... момент, когда инициируется какой-то набор операций, или когда идет именно сохранение результата в БД. Но от этого уже мало толку, как назвали, так и назвали. Да. Верно есть куча разных транзакций - Логическая - Распределенная - JTA - JDBC Самый геморой это когда хибер работает исключительно через JDBC транзакцию. Тогда встрять в процесс не так просто. Но тоже можно. В остальных случаях, ещё проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 11:28:07 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
Да, тут просто путаница в терминологии. Я имел ввиду транзакцию с точки зрения СУБД. Такая транзакция находится четко внутри сессии (читай - внутри соединения). Если же мы начинаем говорить про распределенные транзакции, то это уже совсем другой разговор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 11:44:55 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
cdtyjvДа, тут просто путаница в терминологии. Я имел ввиду транзакцию с точки зрения СУБД. Такая транзакция находится четко внутри сессии (читай - внутри соединения). Если же мы начинаем говорить про распределенные транзакции, то это уже совсем другой разговор. Между SessionImpl и транзакцией БД есть такая прослойка как класс JDBCTransaction. Туда при остром желании можно вклиниться и навязать своё поведение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 12:02:36 |
|
||
|
hibernate. транзакции и сессии.
|
|||
|---|---|---|---|
|
#18+
cdtyjvДа, тут просто путаница в терминологии. Я имел ввиду транзакцию с точки зрения СУБД. Такая транзакция находится четко внутри сессии (читай - внутри соединения). Если же мы начинаем говорить про распределенные транзакции, то это уже совсем другой разговор. Если б вы писали все это на форуме, скажем, Oracle, тогда ваша оговорка имела бы право на существование. Но в java понятие транзакции несколько ширше. Об этом не надо умалчивать. В любую транзакцию можно вклиниться, об этом, думаю, никто спорить не будет. Это не какая-то неделимая сущность. Вопрос только, надо ли для этого держать соединение, как в классическом понимании транзакции, или нет - как транзакция понимается в терминологии java. Ну, думаю, уже все разобрались) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 12:18:22 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2128506]: |
0ms |
get settings: |
14ms |
get forum list: |
27ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
46ms |
get topic data: |
20ms |
get forum data: |
5ms |
get page messages: |
102ms |
get tp. blocked users: |
2ms |
| others: | 279ms |
| total: | 511ms |

| 0 / 0 |
