2017-02-12 6 views
0

SQLを使用して、あるテーブルのデータを別のミラーテーブルにコピーできます。 (例えばinsert into TABLE_EXAMPLE_COPY select * from TABLE_EXAMPLE;。 はどのようにHibernate org.hibernate.Criteriaまたはorg.hibernate.Queryまたはorg.hibernate.SQLQueryを使用して同じことを行うことができますか?休止状態を使用してマスターテーブルからクローンテーブルにすべてのレコードをコピーします

答えて

2

あなたはJPAやHibernateのの境界内からそのアクションを実行したい場合は、それを達成するための最良の方法を使用することですネイティブSQL文。

session 
    .createNativeQuery("INSERT INTO table_copy SELECT * FROM table"). 
    .executeUpdate(); 

を他のオプションは、POJOにソーステーブルを読み取り、そのコピーテーブルのPOJO表現にそれを変換し、それらの行を保存伴う。これらの問題は、あなたはまた、ネットワークの遅延を導入していることですおよびJVMオーバーヘッドを使用して、メモリー内オブジェクトを作成し、変換し、ネットワーク上でデータベースにプッシュバックします。

上記の解決方法は、これらの欠点をすべて回避し、データベースがそれをどのようにして最良の方法で処理することを可能にします。

+0

はい、私はそのプロセスの背後に作成されたPOJOが心配していました。それぞれのPOJOは62のプロパティを持ち、5000-600,000のPOJOが複製されます。だから、良い提案をお願いします。 –

関連する問題