2015-01-21 47 views
0

我们是否必须在使用后关闭会话?据我所知,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

是......让它成为一种习惯! – z21 2015-01-21 08:28:37

回答

3

是。当你完成它时,你应该关闭它。你不需要明确地关闭它,有框架可以为你做到这一点。 打开和关闭会话不是一个昂贵的操作。由于随着时间的推移,缓存的会话数据变得更加陈旧,所以通常会让问题变得过长。 会话在第一次调用getCurrentSession()时打开,并在事务结束时关闭。在事务提交之前它也会自动刷新。

https://developer.jboss.org/wiki/OpenSessionInView

0

使用该通式到我们的代码关闭连接

try { 
connection = dataSource.getConnection(); 
// Do stuff with connection. 
} finally { 
connection.close(); 
} 

检查更here

相关问题