hibernate的配置文件是
<property name="dialect">net.sf.hibernate.dialect.OracleDialect</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.username">exam</property>
<property name="connection.password">exam</property>
<property name="connection.url">jdbc:oracle:thin:@192.168.0.24:1521:orcl</property>
<property name="connection.pool.size">1</property>
<property name="statement_cache.size">25</property>
<property name="jdbc.fetch_size">50</property>
<property name="jdbc.batch_size">30</property>我把connection.pool.size改成30也不管用,不知道connection.pool.size应该怎么设置,是不是connection.pool.size设置的问题?

解决方案 »

  1.   

    把<property name="connection.pool.size">1</property>拿掉看看
      

  2.   

    最好用Javabean实现hibernate数据的逻辑功能,然后做一个主类测试好再移植到jsp
      

  3.   

    <property name="connection.provider_class">net.sf.hibernate.connection.DBCPConnectionProvider</property> 
    <property name="dbcp.maxActive">100</property> 
    <property name="dbcp.whenExhaustedAction">1</property> 
    <property name="dbcp.maxWait">120000</property> 
    <property name="dbcp.maxIdle">10</property> 
    <property name="dbcp.ps.maxActive">100</property> 
    <property name="dbcp.ps.whenExhaustedAction">1</property> 
    <property name="dbcp.ps.maxWait">120000</property> 
    <property name="dbcp.ps.maxIdle">100</property>我加上了连接池,但是报错,错误信息是:ORA-01000: 超出打开游标的最大数我的程序是
    public Question getQuestion(String tableName, long id) throws HibernateException{
    this.initSession();  //代开session
    Question ques=null;
    String queryStr="from com.cbit_cn.exam.dao."+tableName+" as question where question.id='"+id+"'";
    Query query = this.session.createQuery(queryStr);
    List it = query.list();
    if(it.size()!=0){
    ques=(Question)it.get(0);
    }
    System.out.println("size of it size "+it.size());
    this.closeSession();  //关闭session
    return ques;
    }我将上面这个方法循环执行100遍就会报错,好像是session释放不掉,为什么呢?释放session的代码是:
    public static final ThreadLocal DBsession = new ThreadLocal();
    public static void closeSession() throws HibernateException {
    Session s = (Session) DBsession.get();
    DBsession.set(null);
    if (s != null)
    s.close();
    }
      

  4.   

    initSession();  代码帖出来看看
      

  5.   

    private static SessionFactory sessionFactory = null;
    public static final ThreadLocal DBsession = new ThreadLocal();public static Session currentSession() throws HibernateException {
    if (sessionFactory == null) {
    // 如果sessionFactory实例为null则从JNDI中获取
    if (getSystemSessionFactory() == false) {
    throw new HibernateException("Exception geting SessionFactory from JNDI ");
    }
    }
    Session s = (Session) DBsession.get();
    if (s == null) {
    s = sessionFactory.openSession();
    DBsession.set(s);
    }
    return s;
    }
      

  6.   

    public static void closeSession() throws HibernateException {
    Session s = (Session) DBsession.get();
    DBsession.set(null);
    if (s != null)
    s.close();
    }

    private static boolean getSystemSessionFactory() {
    try {
    //从JNDI中取得SessionFactory的实例,如果出错返回false
    Context inttex = new InitialContext();
    sessionFactory =(SessionFactory) inttex.lookup("HibernateSessionFactory");
    } catch (NamingException e) {
    return false;
             }
    return true;
    }