powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / jdbc, hibernate и пул соединений к Oracle
6 сообщений из 6, страница 1 из 1
jdbc, hibernate и пул соединений к Oracle
    #38705421
Фотография lLocust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый!

Потихоньку разбираюсь с web программированием и столкнулся с некоторым концептуальным недопониманием использования пула соединений к СУБД.

Т.к. пул соединений предполагает что неизвестно какая сессия к СУБД будет получена текущим пользователем для работы, то использование временных таблиц в данном случае невозможно. Правильно?
Так же, как я понимаю, невозможно использовать блокировку документа для эксклюзивного доступа к нему.

Если как-то best practics для, скажем, такой ситуации:
мне нужно открыть документ для его изменений (при этом я должен быть уверен что никто больше его не поменяет).
Я вношу в документ некоторые изменения (меняю его шапку или может даже наполнение другими документами), и только при сохранении все изменения накатываются в БД (хотелось бы что бы вносимые мной изменения так же находились в БД для возможности join`а справочников или других операций).
После того как я его закрыл документ доступен другим пользователям.

или этот процесс стоит организовать по-другому?
...
Рейтинг: 0 / 0
jdbc, hibernate и пул соединений к Oracle
    #38705441
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В многопользовательских приложениях это реализуется через Optimistic Lock. Каждый апдейт документа инкрементирует версию.
Если сохраняемая версия окажется старее, чем текущая в базе, то будет ошибка блокировки. Такое решение позволяет избежать длинных транзакций в многопользовательской системе. Но если у вас intranet приложение. Количество пользователей ограничено, а БД дорогая и модная, тогда уже можно смотреть на альтернативные возможности этой БД.
...
Рейтинг: 0 / 0
jdbc, hibernate и пул соединений к Oracle
    #38705464
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 24.07.2014 21:24, lLocust wrote:

> Потихоньку разбираюсь с web программированием и столкнулся с некоторым
> концептуальным недопониманием использования пула соединений к СУБД.

Интересное начало.
Казалось бы, причём тут WEB?


> Т.к. пул соединений предполагает что неизвестно какая сессия к СУБД
> будет получена текущим пользователем для работы, то использование
> временных таблиц в данном случае невозможно. Правильно?

Неправильно.

> Так же, как я понимаю, невозможно использовать блокировку документа для
> эксклюзивного доступа к нему.

Понимаешь неправильно.


> Если как-то best practics для, скажем, такой ситуации:
> мне нужно открыть документ для его изменений (при этом я должен быть
> уверен что никто больше его не поменяет).

Есть так называемые "блокировки уровня приложения", они бы подошли тут
максимально. Это, в общем, блокировки сущностей уровня приложения,
которые выполняются тоже на уровне приложения. Т.е. ты их реализуешь
сам. У тебя есть сессии, пользователи, и объекты (документы), так вот,
ты в каке-то место записываешь, что пользователь такой-то в такой-то
сессии заблокировал такой-то документ(ы). Соответственно, при каждом
изменении проверяешь, что этот пользователь в этой сессии имеет блокировку.

> Я вношу в документ некоторые изменения (меняю его шапку или может даже
> наполнение другими документами), и только при сохранении все изменения
> накатываются в БД (хотелось бы что бы вносимые мной изменения так же
> находились в БД для возможности join`а справочников или других операций).
> После того как я его закрыл документ доступен другим пользователям.
> или этот процесс стоит организовать по-другому?

Это уже вообще чисто в предметной области задача. Нужно сохранять
журналы изменений -- сохраняй.
На самом деле никто такой хренью не занимается чаще всего, но если надо
-- реализуй.


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
jdbc, hibernate и пул соединений к Oracle
    #38705488
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lLocustмне нужно открыть документ для его изменений (при этом я должен быть уверен что никто больше его не поменяет).
над этим подумай.
Раньше 1С тоже хотела....ещё круче - всю таблицу заблокировать.
...
Рейтинг: 0 / 0
jdbc, hibernate и пул соединений к Oracle
    #38705716
Фотография lLocust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
Спасибо.

Petro123,
Вы тоже намекаете на оптимистическую блокировку?

MasterZiv> Т.к. пул соединений предполагает что неизвестно какая сессия к СУБД
> будет получена текущим пользователем для работы, то использование
> временных таблиц в данном случае невозможно. Правильно?

Неправильно.

> Так же, как я понимаю, невозможно использовать блокировку документа для
> эксклюзивного доступа к нему.

Понимаешь неправильно.
А что именно я не правильно понимаю? Ведь если я не ошибаюсь, то если я что-то запишу во временные таблицы (или заблокирую запись), то либо должен использовать длинные транзакции (т.е. удерживать соединение с БД за собой) либо есть вероятность что это соединение будет отдано другому пользователю....

авторЕсть так называемые "блокировки уровня приложения", они бы подошли тут максимально. Это, в общем, блокировки сущностей уровня приложения, которые выполняются тоже на уровне приложения. Т.е. ты их реализуешь сам. У тебя есть сессии, пользователи, и объекты (документы), так вот, ты в каке-то место записываешь, что пользователь такой-то в такой-то
сессии заблокировал такой-то документ(ы). Соответственно, при каждом изменении проверяешь, что этот пользователь в этой сессии имеет блокировку.
Как вариант, спасибо.

автор> Я вношу в документ некоторые изменения (меняю его шапку или может даже
> наполнение другими документами), и только при сохранении все изменения
> накатываются в БД (хотелось бы что бы вносимые мной изменения так же
> находились в БД для возможности join`а справочников или других операций).
> После того как я его закрыл документ доступен другим пользователям.
> или этот процесс стоит организовать по-другому?

Это уже вообще чисто в предметной области задача. Нужно сохранять журналы изменений -- сохраняй.
На самом деле никто такой хренью не занимается чаще всего, но если надо
-- реализуй.
Не понял, при чем тут "журнал изменений"? я говорил про конкурентный доступ к документам.

Вообщем как понял есть 2 основных направления обеспечения конкурентного доступа при использовании пула соединений:
- Оптимистическая блокировка
- Реализация блокировок на уровне приложения
Угу?
...
Рейтинг: 0 / 0
jdbc, hibernate и пул соединений к Oracle
    #38705750
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lLocust,
угу - намекал.
Бери шире, технологии веб - вообще нет конкурентного доступа.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / jdbc, hibernate и пул соединений к Oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]