169 похожих чатов

Подскажите пожалуйста, как в spring data jpa можно добавить глобальный

запрос, который будет выполняться перед каждым методом репозитория в том же коннекте? Задача состоит в том, чтобы инициализировать внутреннюю сессию в бд после получения каждого коннекта. Вот пример того, как это реализовано на js:
async function connect() {
if (!pool) {
log.error('Can`t connect to db, empty connection pool');
return false;
}
let conn;
let sql = "\
BEGIN \
MAIN.SWITCH_CONTEXT(\
vch_VC_CLN_SESSIONID => ':sessionId'\
);\
EXCEPTION\
WHEN ERRORS_PKG_S.SESSION_DOES_NOT_EXIST OR\
ERRORS_PKG_S.SESSION_CLOSED OR\
ERRORS_PKG_S.MULTIPLE_SESSIONS \
THEN \
MAIN.INIT( \
vch_VC_IP => '127.0.0.1', \
vch_VC_USER => ':user', \
vch_VC_PASS => ':password', \
vch_VC_APP_CODE => ':appCode', \
vch_VC_CLN_APPID => ':appID'\
);\
END;\
"
try {
conn = await pool.getConnection();
await conn.execute(bindParams(sql, sessionOptions));
} catch (error) {
log.error('Connect error', error);
conn = false;
}
return conn;
}

6 ответов

12 просмотров

Аспект с поинткатом на все методы репозитория сделай

Camoufly- Автор вопроса
Alexandr ∨∧‾ Emelyanov
Аспект с поинткатом на все методы репозитория сдел...

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

Camoufly- Автор вопроса
Alexandr ∨∧‾ Emelyanov
В смысле? Про какой ты контекст?

Я без понятия что происходит под капотом описанной выше процедуры. К сожалению это проприетарное ПО с выставленными наружу пакетами процедур и представлениями в качестве API. Для корректного выполнения некоторых процедур они требуют дополнительную регистрацию каждого подключения из пула с помощью вышеописанной процедуры. На сколько я понимаю, под капотом спринг тоже использует пул подключений(hikari). Поэтому я не уверен, что аспект репозитория будет выполняться в том же коннекте, выбранном из пула.

Camoufly
Я без понятия что происходит под капотом описанной...

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

Похожие вопросы

Обсуждают сегодня

Интересно, нет ли какого-то способа получить из dll не адрес самой метки, а адрес со смещением?
The Bird of Hermes
54
Делал задачу вот такую https://stepik.org/lesson/4985/step/9?unit=1083 получилось такое https://play.haskell.org/saved/ipKrepqe оно работает, тестов много не писал, но работае...
Fedor
22
что-то я не понимаю, в линуксе отладочную информацию как убрать из бинаря? он что с этой опцией, что без - одного и того же (достаточно большого) размера (да, я про лазарь)
Iluha Companets
13
Hey Does anyone know how can I receive push notifications from Github on my account? The official Github android app doesn't send notifications, and I don't use the email bec...
Jacob
10
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
58
Как в webstorm включить фичу, чтобы прямо в коде можно было видеть кто редактировал это строчку и в каком коммите?
Антон
7
Всем привет, а может кто-то подсказать какие-то советы или типо того, как оптимальнее всего сапортить сервисы в разных локациях (канада + австралия + евпропа)? Будет ли ошибк...
Stas
8
Это что теперь, любой бот сможет принимать платежи без ебли с юр лицами?
Lencore
8
Не догоняю немного каким боком тут эппл Вот есть веб (мини) апп, который по факту веб сайт, просто в телеге веб вью и если там оплата, то нежно вот эти приседания?
e\\/gen
7
Сообщение* в закодированном виде. То есть, просто сделать sendMessage?text=Привет бла-бла! не получится, надо в HEX переводить, и добавлять процент, типа такого: sendMessage?t...
КТ315
21
Карта сайта