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

时间:2015-09-18 22:08:20

标签: java transactions mybatis

我的问题很简单。在像这样提交事务后,是否可以重用会话?

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();
}

或者提交后关闭会话并打开新会话会更好吗?

1 个答案:

答案 0 :(得分:2)

我刚刚开始使用MyBatis,并且遇到了类似的会话管理问题。这是我迄今为止学到的东西:

  1. 会话应保持开放,只要有必要,以完成您的交易,然后关闭。
  2. MyBatis提供会话级"本地"缓存可能有益于您的应用程序的性能。当然,这取决于您的应用程序的设计,但通常您保持会话活动的时间越长,缓存越好。 (MyBatis处理提交和回滚时的缓存刷新。)
  3. 对于您的简单示例,可以保持会话对这两个事务保持打开状态。在整个DAO层中有效使用MyBatis会话意味着在这两个指南之间找到平衡点。

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