2011-08-09 9 views
3

実際の挿入前にseq.nextvalを別のコールとしてデュアルから実行しないようにHibernateを構成できますか?構成IDシーケンスhibernateジェネレータ

org.hibernate.jdbc.AbstractBatcher about to open PreparedStatement (open PreparedStatements: 0, globally: 0) 
org.hibernate.SQL select SEQUENCE_1.nextval from dual 
org.hibernate.id.SequenceGenerator auditor50 - Sequence identifier generated: 122797 
org.hibernate.jdbc.AbstractBatcher auditor50 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1) 

<class..> 
    <id column="ID" name="id" type="long"> 
     <generator class="sequence"> 
      <param name="sequence">SEQUENCE_1</param> 
     </generator> 
    </id>  
</class> 
+0

どのように値を挿入するのですか? –

+0

テーブル(ID)に挿入VALUES(SEQUENCE.NEXTVAL); – Rodriguez

+0

これが現在の動作を停止するかどうかはわかりませんが、データベースのデフォルト値が 'SEQUENCE.NEXTVAL'の場合はどうなりますか? – Jeremy

答えて

1

私はこれが可能ではないと思います。しかし、私はそれがどのような違いをもたらすのか分かりません。パフォーマンス上の理由からこれを行う場合は、

  1. 両方のアプローチの重要な違いを測定しましたか?
  2. HibernateのシーケンスIDジェネレータは実際にはhiloシーケンスIDジェネレータであり、N個の挿入(N defaulting at 50、IIRC)の次の値しか得られないことをご存じですか? ?
+0

1.私は実際にそれを測定していませんが、トランザクションあたり200+の行を挿入します。 – Rodriguez

+0

2.私はそれがすべての50個の挿入を挿入しません – Rodriguez

+0

2.私の間違い。アノテーションで設定すると、シーケンスジェネレータは実際にはseqhiloジェネレータです。 XMLでは、class = "sequence"ではなく "class =" seqhilo " –

関連する問題