0

Hibernate 3 を使用しています。

私の質問は、複数の挿入クエリを最適化する方法、または Hibernate または HQL を使用して単一の挿入クエリを使用して複数のクエリを起動する方法です。

私はすでに次のリンクを通過しました:

1 つのステートメントに複数の値を挿入する SQL を生成する HQL を作成する方法は?

HQLバルクインサート

そして、私の質問がわずかに異なることがわかりました。私のクエリは次のとおりです。

INSERT INTO scoring.table_a (a_id, a_name) VALUES (1, 'a');
INSERT INTO scoring.table_a (a_id, a_name) VALUES (2, 'b');
....
...
..
INSERT INTO scoring.table_a (a_id, a_name) VALUES (1000, 'd');

値のセットは、単一の列ではなく、複数の列で異なります。また、入力される値は計算され、一部のテーブルから直接取得されるわけではありません。また、使えINSERT INTO... SELECTない場合もあります。私の知る限り、INSERT INTO... SELECT別のテーブルからデータを取得するためです。

バッチ処理についても読んだことがありますが、それも複数の挿入クエリを起動するため、使用したくありません。

誰でも私を助けてくれることを願っています。

4

1 に答える 1

0

ここで、次のような休止状態のエンティティを使用することをお勧めします

@Entity(name = table_a)
public class TableAEntity{

@id
@Column(name="a_id")
String aId;

@Column(name = "a_name")
String aName;

public TableAEntity(String aId, String aName){
  this.aId=aid;
  this.aName =aName;
}

// Getter setter for column aId, aName
}

次に、ここから取得した例のように、すぐに更新することができます

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
for ( int i=0; i<100000; i++ ) {
    TableAEntity entity= new TableAEntity(.....);
    session.save(entity);
}
tx.commit();
session.close();

同じことを行う他の方法は、同じリンクにあります。

于 2013-10-08T06:47:29.030 に答える