我是MyBatis的初学者,我正在浏览他们文档的下方链接:
MyBatis Getting Started
它的建议是:
每个线程都应该有自己的SqlSession实例。 SqlSession的实例不是共享的,也不是线程安全的。
从我的理解是,我们应该以这种方式使用它:
SqlSession session = // getting one instance of SqlSession as suggested in above link
List<Integer> result = session.selectList("getUsersId");
session.close();
所有类似的地方,我需要每次都创建新的SqlSession并关闭它们。有没有更好的方法来使用它?从更好的方式来说,我的意思是更好的编写代码的方式,模式应该为我创建SqlSession
并自动关闭它
(我正在使用Vaadin和MyBatis。)
答案 0 :(得分:0)
SqlSession的生存期范围是方法或Http请求。因此,如果方法返回或请求完成,它将自动关闭。
答案 1 :(得分:0)
SqlSession是可自动关闭的
使用try-with-resource时,Autocloseable类将调用默认的close方法
正确的模式是
try (SqlSession session = // getting one instance of SqlSession as suggested in above link) {
List<Integer> result = session.selectList("getUsersId");
}
答案 2 :(得分:-1)
使用ThreadLocal。使用这种方法,每个线程都有自己的SqlSession。请注意,线程应该自行清理,因此关闭打开的sql会话应该是它的一部分。
更多相关内容: