Есть такая проблема:
Существует несколько временных таблиц в БД Oracle (временных в смысле GLOBAL TEMPORARY TABLE)
Необходимо как-то научиться работать с ними в бинах EJB 3 (Stateless, а скорее всего в Statefull). Как это сделать пока не представляю — насколько я понимаю сессия оракла, уничтожается вместе с закрытием объекта Connection Java, но вель этот коннект управляется контейнером. Замечу также что работа со временными таблицами идет продолжительное время и при этом необходимо много раз вызывать методы бина. Сумбурно конечно написал ... Но может подскажете как лучше поступить ?
Здравствуйте, yanich, Вы писали:
Y>Необходимо как-то научиться работать с ними в бинах EJB 3 (Stateless, а скорее всего в Statefull). Как это сделать пока не представляю — насколько я понимаю сессия оракла, уничтожается вместе с закрытием объекта Connection Java, но вель этот коннект управляется контейнером. Замечу также что работа со временными таблицами идет продолжительное время и при этом необходимо много раз вызывать методы бина. Сумбурно конечно написал ... Но может подскажете как лучше поступить ?
теоретически, надо смотреть в сторону SFSB BMT, чтобы гарантировать, что на протяжении одной большой транзакции общение будет идти через одно и то же соединение
с точки зрения дизайна, конечно, странновато видеть, что ресурсы будут использоваться в режиме, близком к dedicated
если не делать в одной транзакции, то каждый раз аппсервер тебе может подсовывать разные connection (то новые свежесозданные, то от других сессий)
и, всё равно, останется доп. аспект: после завершения транзакции из-за реюза коннектов в пуле коннект останется живым, врем.таблицы, видимо, тоже останутся жить.
Здравствуйте, yanich, Вы писали:
Y>Я тоже рассматриваю вариант одной большой транзакции, но вот вопрос — разве при пассивейте коннект к базе сохраняется ?
коннект возвращается в пул и может там прожить ещё какое-то время, обычно регулируемое параметром пула
в любом случае, обычно у пула также есть параметр типа "минимальный размер", и столько коннектов (открытых) в нём поддерживается всегда
в-общем, проблема не в технических аспектах, платформа, наоборот, поощряет продумывать способы решения на коротких транзакциях, потом временные данные лучше иметь на клиенте, который в данный момент времени участвует в "длинной" транзакции... в-общем, попробуй объяснить (хотя бы себе), почему временные таблицы будут лучше