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

답변

3

예. 당신이 그것을 마치면 그것을 닫아야합니다. 명시 적으로 직접 닫을 필요는 없습니다.이 작업을 수행 할 수있는 프레임 워크가 있습니다. 세션을 열고 닫는 데 비용이 많이 드는 작업은 아닙니다. 일반적으로 캐시 된 세션 데이터가 시간이 지남에 따라 점점 더 오래된 상태가되면서 너무 길게 열어 두는 것이 문제입니다. 세션은 getCurrentSession()이 처음 호출 될 때 열리고 트랜잭션이 끝나면 닫힙니다. 또한 트랜잭션이 커밋되기 전에 자동으로 플러시됩니다.

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

0

사용이 일반 식 통해 UR 코드에서 연결을 닫습니다

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

더보기 here

관련 문제