为什么数据库连接没有立即关闭?

时间:2018-09-16 17:16:16

标签: postgresql mybatis

我是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(),但是为了确定起见,我添加了它。

我看到了Can't close db connection with MyBatis,但是由于我是UNPOOLED,所以我认为它不适用。还有Slow closing SqlSession in myBatis with spring,但似乎也不相关。

大约30秒后,连接消失,因此这不是主要问题,但是我想了解这一点。有什么想法吗? MyBatis是否由于某种原因延迟关闭它?

MyBatis 3.4.6,Postgres 9.6,Debian上的Java 7

0 个答案:

没有答案