我是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