Реализация индикатора выполнения с Hibernate и PL / SQL - PullRequest
1 голос
/ 23 января 2012

Я разрабатываю хранимую процедуру PL / SQL, которая вставляет строки в таблицу.Процедура потенциально записывает десятки тысяч строк на каждый вызов, что может занять несколько минут.Я также разрабатываю другую процедуру, которая запрашивает представление V $ SESSION_LONGOPS для получения информации, такой как объем выполненной работы и приблизительное время, оставшееся до обработки, чтобы я мог использовать эту информацию для индикатора выполнения.

Здесь я не совсем понимаю, как Oracle работает.Я собираюсь вызвать две процедуры из приложения Java, и эти процедуры должны будут выполняться одновременно.Чтобы добиться такого поведения, нужно ли использовать два соединения с Oracle?Или достаточно одного соединения?Происходит ли многопоточность автоматически в сеансе Oracle, если используется несколько соединений?

Я использую Hibernate для подключения к базе данных.И у меня есть несколько вопросов к заявке тоже.Если я отправляю два запроса в базу данных из двух потоков, использует ли Hibernate два соединения из своего пула соединений для отправки запросов?Второй запрос (который будет использоваться индикатором выполнения) будет выполняться повторно, пока первый запрос (который выполняет вставки) все еще выполняется.

Заранее спасибо.

1 Ответ

0 голосов
/ 23 января 2012

Сеанс Hibernate не является потокобезопасным, поэтому каждый поток должен иметь свой собственный сеанс. Каждый сеанс использует соединение JDBC, поэтому оба сеанса будут получать разные соединения JDBC из пула.

И, конечно, Oracle разрешает одновременный доступ к базе данных, используя два соединения, иначе каждое приложение будет иметь серьезные проблемы с производительностью.

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