Mybatis «Создание новой SqlSession» и «Закрытие нетранзакционной SqlSession» для * каждого * запроса к базе данных - PullRequest
0 голосов
/ 01 мая 2020

Mybatis, кажется, создает и закрывает SqlSession для каждого запроса к базе данных (например, если в одном запросе http мы выполняем два запроса к базе данных, то создаются и уничтожаются два сеанса). Это нормально (приведет ли это к низкой производительности) и как мне это исправить?

Подробности:

Логи -

Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4b7e4174] was not registered for synchronization because synchronization is not active
JDBC Connection [HikariProxyConnection@163878081 wrapping com.mysql.cj.jdbc.ConnectionImpl@162e1fc3] will not be managed by Spring
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4b7e4174]
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5d9714ab] was not registered for synchronization because synchronization is not active
JDBC Connection [HikariProxyConnection@91618474 wrapping com.mysql.cj.jdbc.ConnectionImpl@162e1fc3] will not be managed by Spring
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5d9714ab]

Коды -

Article a1 = dao.selectById(123);
Article a2 = dao.selectById(456);

где Дао - это обычный Mybatis Mapper. (Точнее, это mybatis plus BaseMapper)

Спасибо за любые идеи!


PS Мои наивные мысли -

официальный do c говорит -

Если вы используете веб-фреймворк любого рода, ... после получения HTTP-запроса вы можете открыть SqlSession, затем, вернув ответ, вы можете закрыть его ...

Таким образом, моя ситуация ненормальная. Поскольку в одном http-запросе с двумя запросами к базе данных я вижу две SqlSessions вместо одной.

...