本帖最后由 szqfsx123 于 2009-08-31 13:38:43 编辑

解决方案 »

  1.   

    看我连接池的相关配置有没有更加优化的方法<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"   destroy-method="close">
             <property name="driverClass" value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
             <property name="jdbcUrl" value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=webpro;"/>            
             <property name="user" value="sa"/>
             <property name="password" value="sa"/>
             
             <property name="initialPoolSize" value="3"/>
             <property name="maxIdleTime" value="3600"/>
             <property name="minPoolSize" value="2"/>
             <property name="maxPoolSize" value="200"/>
             <property name="idleConnectionTestPeriod" value="30000"/>
             <property name="acquireIncrement" value="20"/>
             <property name="acquireRetryAttempts" value="30"/>
             <property name="acquireRetryDelay" value="1000"/>
             <property name="autoCommitOnClose" value="false"/>
             <property name="automaticTestTable" value="ybtabletest"/>
             <property name="breakAfterAcquireFailure" value="false"/>
             <property name="checkoutTimeout" value="30000"/>
             <property name="maxStatements" value="10000"/>
             <property name="maxStatementsPerConnection" value="0"/>
             <property name="numHelperThreads" value="10"/>
             <property name="propertyCycle" value="100"/>
             <property name="testConnectionOnCheckout" value="false"/>
             <property name="testConnectionOnCheckin" value="false"/>
    </bean>
      

  2.   


    public List find(String HQL) {

    Session s=HibernateSessionFactory.getSession();
    BasicDataMenber ss=new BasicDataMenber();//实体bean
    Query q=s.createQuery(HQL);
    s.evict(ss);

    return q.list();



    }
      

  3.   

    this.getSessionFactory().close();
    这个工厂都关了还玩什么,工厂是只有一个而session是每次都创建的.
      

  4.   

    那我应该怎么写额?
    这样写可可以吗?会不会耗费连接资源。?
    public List ObjectHqlSelect(String hql) {
    // TODO Auto-generated method stub
    Session s=this.getSession();
    Query query=s.createQuery(hql);
    List list=query.list();
    s.close();
    return list;
    }
      

  5.   

    session.close() 就可以了,现在对了.这就关闭了会话,也就关闭了连接数据库.这些HIBERNATE都已经做了,所以你也没用理,也看不到.
    你关闭了会话工厂,那如何产生会话?
      

  6.   


    Session session = null;
    public List ObjectHqlSelect(String hql) {
           
            session = HibernateUtil.getSessionFactory().getCurrentSession();
            Query query=session.createQuery(hql);
            List list=query.list();
            session.close();
            return list;
        }
      

  7.   


    Class HibernateUtil{
       private static SessionFactory sessionFactroy;
       static{
         sessionFactroy = new Configuration().buildSessionFactory();
       }
       
       public static  SessionFactory getSessionFactory(){
         return sessionFactroy ;
      }
    }
      

  8.   


    Class HibernateUtil{
       private static SessionFactory sessionFactroy;
       static{
         sessionFactroy = new Configuration().buildSessionFactory();
       }
       
       public static  SessionFactory getSessionFactory(){
         return sessionFactroy ;
      }
    }
      

  9.   

    http://topic.csdn.net/t/20040930/11/3420988.html
      

  10.   

    sessionFactroy = new Configuration().buildSessionFactory();
    改成try{
    sessionFactory = new Configuration().configure().buildSessionFactory();
    }catch(Exception e){
    e.printStackTrace();
    }手写错了。呵呵