DAO中是不能关闭Session 在Service里才关闭也可以通过Servlet 的Filter来做

解决方案 »

  1.   

    caveatemptor 就是放在HibernateFilter 里做的..
      

  2.   

    public class BaseDAO implements IBaseDAO {
    protected Session session = null; public BaseDAO()
    {
    super();
    try
    {
    this.session = HibernateInit.getInstance().getSessionFactory().openSession();
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }

    public void release() {
    try {
    if (session != null){
    session.close();
    }
    }
    catch (Exception e) {
    e.printStackTrace();
    }
    } public void setSession(Session s) {
    this.session = s;
    }

    /**
     * @return
     */
    public Session getSession() {
    return session;
    }

    /**
     * 由VO得到所有的记录
     * @param voClassName
     * @return List VOClass
     */
    public List qryAll_By_VOClassName(String voClassName)
    {
    List list = null;
    if (voClassName == null) return null;
    try
    {
    list = session.find("from "+ voClassName);
    }
    catch (HibernateException e)
    {
    release();
    System.out.println("错误信息: voClassName 错误");
    e.printStackTrace();
    }
    return list;
    }
    /**
     * 由VO的class 和 id 号得到一个对象
     * @param c
     * @param id
     * @return Object
     */
    public Object fndVO_By_VOId(Class c, int id)
    {
    Object  vo = null;
    Integer fid = new Integer(id); //类型转换     
    try
    {
    vo = session.load(c, fid);
    }
    catch (HibernateException e)
    {
    release();
    e.printStackTrace();
    }
    return vo;
    }
    }
      

  3.   

    public class BaseJB implements IBaseJB
    {
    /**
      * 由VO得到所有的记录
      * @param voClassName
      * @return List VOClass
      * @throws Exception
      */
    public List qryAll_By_VOClassName(String voClassName) throws Exception
    {
    List list = null;
    BaseDAO daoO = new BaseDAO();
    list = daoO.qryAll_By_VOClassName(voClassName);
    daoO.release();
    return list;
    } /**
     * 由VO的class 和 id 号得到一个对象
     * @param c
     * @param id
     * @return Object
     * @throws Exception
     */
    public Object fndVO_By_VOId(Class c, int id) throws Exception
    {
    Object o = null;
    BaseDAO daoO = new BaseDAO();
    o = daoO.fndVO_By_VOId(c, id);
    daoO.release();
    return o;
    }

    }