连接数过多?
我也新手不会用hibernate
不懂
jdbc还能看懂点。。

解决方案 »

  1.   

    import java.sql.SQLException;
    import java.util.List;import javax.annotation.Resource;import org.hibernate.HibernateException;
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.springframework.orm.hibernate3.HibernateCallback;
    import org.springframework.orm.hibernate3.HibernateTemplate;
    import org.springframework.stereotype.Component;import com.ld.blog.common.MyConfig;
    import com.ld.blog.dao.ArticleDao;
    import com.ld.blog.model.Article;
    import com.ld.blog.service.ListenService;@Component("ArticleDao")
    public class ArticleDaoImpl implements ArticleDao{
    private HibernateTemplate hibernateTemplate;
    public HibernateTemplate getHibernateTemplate() {
    return hibernateTemplate;
    }
       
    @Resource
    public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
    this.hibernateTemplate = hibernateTemplate;
    } public void save(Article article) {
    this.hibernateTemplate.save(article);
    this.hibernateTemplate.flush();
    this.hibernateTemplate.clear();
    } public List showArticle(int userId) {
    ListenService ls=(ListenService) MyConfig.getServiceObj("ListenService");
    List listenId=ls.getListenByUserId(userId);
    String tempStr="";
    String hql="";
    if(!listenId.isEmpty())
    {



       for(int i=0;i<listenId.size();i++)
       {
     tempStr=tempStr+listenId.get(i).toString()+",";
       }
      tempStr=tempStr+userId;
      hql="from Article a where a.userId in("+tempStr+") order by a.id desc";
    }
    else 
    {
       hql="from Article a where a.userId="+userId+"order by a.id desc";
    }
      
    System.out.println(hql);
    List articleList=this.hibernateTemplate.find(hql);

    this.hibernateTemplate.flush();
    this.hibernateTemplate.clear();
        return articleList;
    }//ʵ�ַ�ҳ��ʾ
    public List findByPageBean(final int start, final int pageSize,final String hql) throws Exception 
       {
    /*    ListenService ls=(ListenService) MyConfig.getServiceObj("ListenService");
       List listenId=ls.getListenByUserId(userId);
         String tempStr="";
       for(int i=0;i<listenId.size();i++)
       {
        tempStr=tempStr+listenId.get(i).toString()+",";
       }
       tempStr=tempStr+userId;*/
    List list = null;
    // hql="from Article a where a.userId in("+tempStr+") order by a.id desc";
      try {
       list = this.getHibernateTemplate().executeFind(
         new HibernateCallback() {
          public Object doInHibernate(Session session)
            throws HibernateException, SQLException {
           
           Query query = session.createQuery(hql);
           query.setFirstResult(start);
           query.setMaxResults(pageSize);
           List list = query.list();
           return list;
          }
         });
      } catch (Exception e) {
       throw e;
      }
      return list;
     } public int getArticleNum(int userId) {
    return this.showArticle(userId).size();
    } public int getPageNum(int userId) {
    return this.getArticleNum(userId)/10+1;
    } public int getMyArticleNum(int userId) {
    // TODO Auto-generated method stub
    String hql="from Article a where a.userId="+userId;
    List l=this.hibernateTemplate.find(hql);
    return l.size();
    }
    }
      

  2.   

    public void save(Article article) {
            this.hibernateTemplate.save(article);
            this.hibernateTemplate.flush();
            this.hibernateTemplate.clear();
        }
    这地方存的
      

  3.   

    楼主连接泄露 建议配置HIBERNATE SESSION 关闭策略
    参见HIBERNATE指南 找到如下章节
    hibernate.connection.release_mode 指定Hibernate在何时释放JDBC连接. 默认情况下,直到Session被显式关闭或被断开连接时,才会释放JDBC连接. 对于应用程序服务器的JTA数据源, 你应当使用after_statement, 这样在每次JDBC调用后,都会主动的释放连接. 对于非JTA的连接, 使用after_transaction在每个事务结束时释放连接是合理的. auto将为JTA和CMT事务策略选择after_statement, 为JDBC事务策略选择after_transaction.
    取值 auto (默认) | on_close | after_transaction | after_statement注意,这些设置仅对通过SessionFactory.openSession得到的Session起作用。对于通过SessionFactory.getCurrentSession得到的Session,所配置的CurrentSessionContext实现控制这些Session的连接释放模式。请参阅第 2.5 节 “上下文相关的(Contextual)Session”。
      

  4.   

    请问如何配置HIBERNATE SESSION 关闭策略