2015-01-21 80 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

相關問題