Почему соединение с базой данных не закрывается немедленно? - PullRequest
0 голосов
/ 16 сентября 2018

Я новичок в MyBatis. У меня есть это:

try(SqlSession session = MyBatisConnectionFactory.getSqlSessionFactory().openSession()) {
    List<News> list = session.selectList("selectNews");
    // ...
    session.close();
}

.. а это ...

<configuration>
    <settings>
        <setting name='mapUnderscoreToCamelCase' value='true'/>
    </settings>
    <environments default = 'foo'>
        <environment id = 'foo'>
            <transactionManager type = 'JDBC'/>
            <dataSource type = 'UNPOOLED'>
                <property name = 'driver' value = 'org.postgresql.Driver'/>

Моя проблема в том, что после выполнения запроса я вижу следующее:

 ps -aux | grep post
postgres  5236  0.0  0.8 227656  8252 ?        Ss   13:09   0:00 postgres: postgres foo 127.0.0.1(53213) idle

Если я использую драйвер Postgres напрямую, этого не происходит, например, процесс драйвера исчезает сразу после close (), чего я и ожидаю.

Поскольку у меня есть try-with-resources, я не думаю, что явный вызов close () действительно необходим, но я добавил его, чтобы быть уверенным.

Я видел Не могу закрыть соединение БД с MyBatis , но я не думаю, что это применимо, так как я ОТКЛЮЧЕН. Также Медленное закрытие SqlSession в myBatis с пружиной , но это тоже не актуально.

Соединение исчезает через 30 секунд или около того, так что это не главная проблема, но я хочу это понять. Какие-нибудь мысли? MyBatis по какой-то причине задерживает закрытие?

MyBatis 3.4.6, Postgres 9.6, Java 7 в Debian

...