请问Hibernate集成Spring后Session session = this.getSession();
需要session.close()吗??????我记的好想不用吧``会自动关闭?
package com.htky.dao;import java.util.Iterator;
import java.util.List;import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.htky.po.AA;
import com.htky.po.TabBill;
import com.htky.po.TabScan;
import com.ibatis.sqlmap.engine.builder.xml.XmlConverter;public class HtkyDao extends HibernateDaoSupport{
public List getAll(){
Session session = this.getSession();
Query query = session.createQuery("from TabScan a,TabBill b where a.billCode=b.billCode and a.billCode='B000001897209'");
List list = query.list();
session.close();
return list;
}
        public static void main(String[] args){
ApplicationContext app = new ClassPathXmlApplicationContext("spring_ioc.xml");
HtkyDao dao = (HtkyDao)app.getBean("trackdao");
List list = dao.getAll();
Iterator it = list.iterator();
TabBill bill = null;
while(it.hasNext()){
Object[] o = (Object[]) it.next();
TabScan scan = (TabScan)o[0];
bill = (TabBill)o[1];

}
System.out.println(bill.getSignMan());

//
}
}需要关闭吗?
如果需要关闭!我如何return 

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【xiaomaha】截止到2008-07-10 10:27:42的历史汇总数据(不包括此帖):
    发帖的总数量:58                       发帖的总分数:2374                     每贴平均分数:40                       
    回帖的总数量:144                      得分贴总数量:38                       回帖的得分率:26%                      
    结贴的总数量:45                       结贴的总分数:2024                     
    无满意结贴数:5                        无满意结贴分:350                      
    未结的帖子数:13                       未结的总分数:350                      
    结贴的百分比:77.59 %               结分的百分比:85.26 %                  
    无满意结贴率:11.11 %               无满意结分率:17.29 %                  
    楼主加油
      

  2.   

    需要关闭  直接返回你需要的LIST
      

  3.   

    HibernateDaoSupport
    不是提供了getHibernateTemplate()了吗
    比直接操作session好吧
      

  4.   

    好似容器可以自动回收~~~
    不关闭应该没问题~~waiting 高手回答~~
      

  5.   

    要关闭的,spring集成hibernate底层也是调用hibernate的jar包,要调用session.close()方法关闭!
      

  6.   

    如果你用spring来管理hibernate的事务,session是不需要手动关闭的.
      

  7.   

    如果使用getHibernateTemplate这种方式是不需要关闭的,不过这种方法提供的能力有限。所以我们一般使用其他的方法。用callback的方法。参考:public List retrieveTradeDomainByTypeAndNumber(final String type, final Integer number) {
    return (List) getHibernateTemplate().execute(new HibernateCallback(){
    public Object doInHibernate(Session session) throws HibernateException, SQLException {
    Criteria criteria = session.createCriteria(TradeDomain.class);
    criteria.add(Restrictions.like("sdtype", type, MatchMode.ANYWHERE));
    criteria.setMaxResults(number);
    criteria.setCacheable(true);
    return criteria.list();
    }
    },true);
    }public TradeDomain retrieveTradeDomainById(String demandID) {
    return (TradeDomain) getHibernateTemplate().get(TradeDomain.class, demandID);
    }