web-dev-qa-db-ja.com

Hibernateのネイティブジェネレータクラス

私はHibernateマッピングxmlファイルのこの部分を持っており、nativeが何を意味するかについての良い例を探していました。

<hibernate-mapping>
 <class name="com.hib.Task" table="tasks">
  <id name="id" type="int" column="id" >
   <generator class="native"/>
  </id>

一意の識別子プロパティに関連するものであることは知っていますが、実際に例を示したいと思います。

初心者の質問で申し訳ありませんが、私は休止状態とプログラミング全般に不慣れです:)ありがとうございます!

11
Rimchik

ネイティブとは、ジェネレーターが現在のデータベースでサポートされている内容に応じてID列またはシーケンス列を使用することを意味します。

ドキュメントはここで各戦略について説明しました

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/mapping.html#mapping-declaration-id

ネイティブ

基盤となるデータベースの機能に応じて、ID、シーケンス、またはヒロを選択します。

割り当て済み

save()が呼び出される前に、アプリケーションがオブジェクトに識別子を割り当てられるようにします。要素が指定されていない場合、これはデフォルト戦略です。

例:Mysqlで、auto_incrementとして主キー列がある場合、データベースはこの戦略を使用して更新されます

11
Suresh Atta

そして、Suresh Attaが言ったことを完了するために、シーケンスに名前を付けることができます。

<hibernate-mapping>
 <class name="com.hib.Task" table="tasks">
  <id name="id" type="int" column="id" >
   <generator class="native">
     <param name="sequence">s_tasks</param>
   </generator>
  </id>

したがって、IDENTITYとSEQUENCEのインクリメントされた主キーのどちらでも機能します。

2