Mybatis。提交后可以重用会话吗?

Mybatis. Can a session be reused after a commit?

我的问题很简单。这样一个事务提交后,session是否可以重用?

try (SqlSession session = sqlSessionFactory.openSession()) {
// following 3 lines pseudocode for "doing some work"
  session.insert(...);
  session.update(...);
  session.delete(...);
  session.commit();

  session.insert();
  session.commit();
}

还是在提交后关闭一个会话,然后打开一个新会话更好?

我也是刚刚开始使用 MyBatis,并且对会话管理有类似的问题。这是我到目前为止学到的东西:

  1. 会话应在完成交易所需的时间内保持打开状态,然后关闭。
  2. MyBatis 提供会话级 "local" 缓存,这可能对您的应用程序的性能有益。当然,这取决于您的应用程序的设计,但通常您保持会话活动的时间越长,您的缓存就越好。 (MyBatis 处理提交和回滚时的缓存刷新。)

对于您的简单示例,可以为这两个事务保持会话打开。在整个 DAO 层有效地使用 MyBatis 会话意味着在这两个准则之间找到平衡。

花时间阅读有关会话管理和缓存的官方文档:https://mybatis.github.io/mybatis-3/java-api.html#sqlSessions