0

大きなファイルを構造化された形式でデータベースにアップロードするアプリケーションがあります。Structure は、DataRow オブジェクトのコレクションを保持する Data オブジェクトが保存されるようなものです。

これらのファイルの保存にかなりの時間がかかる場合があり、この保存中にユーザーが操作をキャンセルする場合があります。

私の質問は、JVM を強制終了する以外に、Data オブジェクトを永続化するプロセスを停止する方法はありますか? 永続化テクノロジへの変更を含め、どんな考えも歓迎します。

Data オブジェクトを永続化するために呼び出される DAO のメソッドを次に示します。

@Override
public Data saveData(Data data) {

    Transaction transaction = null;

    Session session = HibernateUtil.getSessionFactory().openSession();
    Data merged = null;
    try{
        transaction = session.beginTransaction();
        merged = (Data) session.merge(data);
        transaction.commit();
    } catch (HibernateException e) {
        transaction.rollback();         
        throw e;
    } finally {
        session.close();
    }
    return merged;
}
4

2 に答える 2

0

可能であれば、巨大なデータをチャンクで永続化することを実現する最良の方法。Persisting- Service は非同期プロセスと見なす必要があります。これにより、データが永続化されている間、クライアントは同時にそれを処理できます。「isCanceled」のようなスレッドローカル変数を初期値「false」で使用できます。すべての反復で、変数が「true」に設定されているかどうかを確認し、永続化操作をキャンセルできます。ただし、ロールバック ロジックが必要な場合は、保持されたエントリをデータベースから削除するロジックを検討する必要がありました。

于 2012-09-12T17:25:58.917 に答える
-1

セッションをパラメータとして設定し、セッションを強制終了してロールバックできるようにします。

于 2012-09-12T15:38:09.460 に答える