我们必须在使用后关闭会话吗?据我所知,如果需要,SessionFactory会关闭会话。例如:
@Autowired
private SessionFactory sessionFactory;
public long count(String extId) {
Session session = this.sessionFactory.getCurrentSession();
BigDecimal count = (BigDecimal) session
.createSQLQuery(
"SELECT COUNT(*) FROM smsc.queue WHERE extId=:extId AND nextId IS NULL")
.setString("extId", extId).uniqueResult();
return count.longValue();
}
这是我在我的服务中调用的DAO方法。这是否意味着我每次都必须关闭会话?
答案 0 :(得分:3)
是。完成后你应该关闭它。你不需要自己明确地关闭它,有一些框架可以为你做到这一点。 打开和关闭会话并不是一项昂贵的操作。当缓存的会话数据随着时间的推移变得更加陈旧时,通常会将它们保持打开太长时间。 第一次调用getCurrentSession()时会打开会话,而当事务结束时会关闭会话。它也会在事务提交之前自动刷新。
答案 1 :(得分:0)
使用此通用公式关闭代码中的连接
try {
connection = dataSource.getConnection();
// Do stuff with connection.
} finally {
connection.close();
}
查看更多here