Hibernate-batch-processing
Hibernate-バッチ処理
Hibernateを使用してデータベースに大量のレコードをアップロードする必要がある場合を考えてください。 以下は、Hibernateを使用してこれを達成するためのコードスニペットです-
デフォルトでは、Hibernateはすべての永続オブジェクトをセッションレベルのキャッシュにキャッシュし、最終的にアプリケーションは50,000番目の行のどこかで OutOfMemoryException で倒れます。 Hibernateで*バッチ処理*を使用している場合、この問題を解決できます。
バッチ処理機能を使用するには、最初に hibernate.jdbc.batch_size をオブジェクトサイズに応じて20または50の数値にバッチサイズとして設定します。 これは、すべてのX行がバッチとして挿入されることを休止状態コンテナに伝えます。 これをコードに実装するには、次のように少し変更する必要があります-
上記のコードは、INSERT操作に対しては正常に機能しますが、UPDATE操作を実行する場合は、次のコードを使用して実現できます-
バッチ処理の例
構成ファイルを変更して、 hibernate.jdbc.batch_size プロパティを追加しましょう-
次のPOJO Employeeクラスを考慮してください-
次のEMPLOYEEテーブルを作成して、Employeeオブジェクトを保存します-
以下は、従業員オブジェクトをEMPLOYEEテーブルにマッピングするためのマッピングファイルです-
最後に、main()メソッドを使用してアプリケーションクラスを作成し、Sessionオブジェクトで使用可能な* flush()および clear()*メソッドを使用するアプリケーションを実行して、Hibernateがこれらのレコードをデータベースに書き込み続けるようにしますそれらをメモリにキャッシュします。
コンパイルと実行
上記のアプリケーションをコンパイルして実行する手順は次のとおりです。 コンパイルと実行に進む前に、PATHとCLASSPATHを適切に設定してください。
- 上記の説明に従ってhibernate.cfg.xml構成ファイルを作成します。
- 上記のように、Employee.hbm.xmlマッピングファイルを作成します。
- 上記のようにEmployee.javaソースファイルを作成し、コンパイルします。
- 上記のようにManageEmployee.javaソースファイルを作成し、コンパイルします。
- ManageEmployeeバイナリを実行してプログラムを実行すると、EMPLOYEEテーブルに100000レコードが作成されます。