sql >> データベース >  >> RDS >> Mysql

Hibernateで一括挿入または更新しますか?

    一括操作には多くのボトルネックが考えられます。最善のアプローチは、データがどのように見えるかに大きく依存します。 Hibernateマニュアル> バッチ処理に関するセクション。

    少なくとも、次のパターンを使用していることを確認してください(マニュアルからコピー):

    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();
    

    フラットファイルを非常に複雑なオブジェクトグラフにマッピングする場合は、よりクリエイティブにする必要がありますが、基本的な原則は、フラッシュ/コミットごとに適切なサイズのデータ​​のチャンクをデータベースにプッシュすることと、回避することのバランスを見つける必要があることです。セッションレベルのキャッシュのサイズを拡大します。

    最後に、データを正しく挿入するためにコレクションやカスケードを処理するためにHibernateが必要ない場合は、 StatelessSession



    1. MySQLでユーザーと認証を管理する方法

    2. PHPは日時を秒に変換します

    3. OracleDG40DBCの微調整

    4. MicrosoftがSQLServer2012R2とSQLServer2012R3を発表しました。