zoukankan      html  css  js  c++  java
  • hibernate 批量插入 Batch

    批量插入(Batch inserts)
    如果要将很多对象持久化,你必须通过经常的调用 flush()以及稍后调用 clear()来控制第一级缓存的大小。

    Session session = sessionFactory.openSession();
    Transaction tx = session.beginTransaction();
    for ( int i=0; i<100000; i++ ) {
      Customer customer = new Customer(.....);
      session.save(customer);
      if ( i % 20 == 0 ) { //20, same as the JDBC batch size
        //flush a batch of inserts and release memory:
        session.flush();
        session.clear();
      }
    }
    tx.commit();
    session.close();
    

      

    INSERT语句的伪码是:INSERT INTO EntityName properties_list select_statement。要注意的是:
    •只支持 INSERT INTO ... SELECT ... 形式,不支持 INSERT INTO ... VALUES ... 形式。

    Session session = sessionFactory.openSession();
    Transaction tx = session.beginTransaction();
    String hqlInsert = "insert into DelinquentAccount (id, name) select c.id, c.name from Customer
    c where ...";
    int createdEntities = s.createQuery( hqlInsert )
    .executeUpdate();
    tx.commit();
    session.close();
  • 相关阅读:
    upload.go
    heartbeat.go
    delete.go
    get.go
    handler.go
    uuid.go
    kingpin_parser.go
    disk.go
    logrus_hook.go
    反连接NOT EXISTS子查询中有or 谓词连接条件SQL优化一例
  • 原文地址:https://www.cnblogs.com/siyu/p/3533936.html
Copyright © 2011-2022 走看看