Ручная блокировка БД необходима, даже если я использую Hibernate / Postgresql / JDBC?

1

Извините, что спросите об этом, если на это был дан ответ, но я слышал (от потенциального другого noob), что у Hibernate есть/есть какой-то диспетчер пулов соединений, который также обрабатывает блокировку базы данных. Теперь я прочитал, что это было отменено в Hibernate 3, поэтому я, как нуб, очень смущен тем, что использовать.

У меня есть Postgresql db с несколькими клиентами, которые используют max. одно соединение db в любой момент времени. Я использую JDBC, но хочу перейти в Hibernate.

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

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

Вы хоть представляете, как это, в общем, нужно решить? Это даже проблема?

  • 0
    Это может быть охвачено возможностями транзакций базы данных / hibernate / jdbc ... но да, hibernate может поддерживать пул соединений (поскольку я только недавно начал использовать его, я использую C3P0), но это не должно беспокоить вас, так как пул сделает приложение работает быстрее ...
  • 0
    добавляет ли транзакция гибернации какую-либо метку времени или рукопожатие с базой данных, чтобы база данных игнорировала одновременное соединение с другим клиентом? я должен использовать специальные настройки / код Java для этого? (в каждый момент времени не будет более 10 клиентов, поэтому я думаю, что вы правы, пул соединений, вероятно, не понадобится, если только не возможно объединение отдельных таблиц БД)
Показать ещё 3 комментария
Теги:
database
hibernate
locking

1 ответ

2
Лучший ответ

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

Пул соединений не имеет ничего общего с блокировкой. Эти два не связаны между собой.

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

Дополнительную информацию см. В документации по Hibernate, а также в статье wikipedia, посвященной оптимистичному контролю параллелизма.

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

Тем не менее, кроме всего прочего, не существует замены для реального понимания параллелизма в приложении и базе данных. Я настоятельно рекомендую подробно прочитать главу документации по PostgreSQL по контролю параллелизма.

  • 0
    спасибо за помощь noob :) Я думал, что моя проблема может быть решена уже с помощью версии jdbc или hibernate, так как они являются очень продвинутыми технологиями и не смогли проверить. Я многому научился и буду читать, благодаря вашему руководству.
  • 0
    @javanoob В будущем было бы очень полезно, если бы вы попытались проиллюстрировать свои вопросы примерами.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню