hibernate.jdbc.fetch_size   非零值,指定JDBC抓取数量的大小 (调用Statement.setFetchSize()). 
请问下JDBC抓取数量的大小 是什么意思啊?
hibernate.jdbc.batch_size   非零值,允许Hibernate使用JDBC2的批量更新. 取值 建议取5到30之间的值  而 batch_size  是不是这个意思啊  JDBC2在批处理时处理数据的条数? 

解决方案 »

  1.   

    Address类,Person类,一个人只有一个地址,一个地址有多个人,
    public class Address{
     private List<Person> p;
       ....
    }
    public class Person{
     private Address addr;
    .....
    }
    找人的同时把地址也抓取出来,fetch_size就是这个意思batch_size,就是批量操作时的记录数吧,没实际试验过,只是理解
      

  2.   

     设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数。当然Fetch Size设的越大,读数据库的次数越少,速度越快;Fetch Size越小,读数据库的次数越多,速度越慢。
     Batch Size是设定对数据库进行批量删除,批量更新和批量插入的时候的批次大小,有点相当于设置Buffer缓冲区大小的意思。Batch Size越大,批量操作的向数据库发送sql的次数越少,速度就越快。
      

  3.   

    Batch Size是设定对数据库进行批量删除,批量更新,和批量插入时的批次大小
    想想一条条的执行删除、更新或插入快些还是批量删除,批量更新,和批量插入快些呢?
    当然是后者。
      

  4.   

    hibernate.jdbc.fetch_size 50
    hibernate.jdbc.batch_size 25
    这两个选项非常非常非常重要!!!将严重影响Hibernate的CRUD性能!
    C = create, R = read, U = update, D = delete
    Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数。例如一次查询1万条记录,对于Oracle的JDBC驱动来说,是不会1次性把1万条取出来的,而只会取出Fetch Size条数,当纪录集遍历完了这些记录以后,再去数据库取Fetch Size条数据。因此大大节省了无谓的内存消耗。当然Fetch Size设的越大,读数据库的次数越少,速度越快;Fetch Size越小,读数据库的次数越多,速度越慢。
      

  5.   

    谢谢大家            请问下  加入数据库里 有一千条数据  我要分页显示 每页 10条数据
          那么它会那hibernate.jdbc.fetch_size 50  条数据吗?      还是怎么回事?  谢谢大家
      

  6.   

    fetch_size 描述一次查询,从数据库获取到session数据的多少,
    batch_size 描述session一次同步多少个对象到数据库中。
    两个值并非越大越好,主要很服务器、数据库有关
      

  7.   

    还是举例说清楚点好。
    比如说设置了fetch_size=50。在执行 select * from a时一次从数据库读取50条数据到内存中,当循环调用ResultSet.next()超过50次之后,只要前面没取完就又从数据库里面取50条。所以如果fetch_size过大程序一次要取的数据就多,过小了吗程序与数据库连接的次数就多,
    要根据实际取个折中值