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 ответов

25 просмотров

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

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

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

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

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

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта