Autocommit + Hibernate не рекомендуется, но все еще плохо, если используется исключительно для транзакций только для чтения? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть большое приложение, которое раньше сохраняло данные в файлах, теперь я переносу его в PostgreSQL. Все операции записи выполняются в явных транзакциях, заканчивающихся коммитом или откатом, при этом блоки «finally» в java корректно кодируются.

Даже в режиме автоматической фиксации вы все равно можете запускать транзакцию при необходимости. И мое приложение делает. Также для случая SELECT, который должен быть совместим с другими записями, это делается в транзакции.

Проблема возникает только для операций только для чтения. Если автокоммит выключен, Hibernate автоматически запускает транзакцию даже для выбора. Поскольку он никогда не фиксируется и не откатывается, он остается активным всегда, поэтому в конечном итоге все пулы соединений pg_bouncer используются и новые транзакции блокируются. Это то, что я пытаюсь решить.

С автокоммитом на моем приложении работало просто отлично.

Итак, вопрос: каких недостатков я могу ожидать? (Опять все записи производятся между началом транзакции и фиксацией в любом случае.)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...