@GeneratedValueの正確な説明と、データベースの観点から何が起こるかに関するさまざまな戦略を見つけるのに苦労しています。Hibernate:@GeneratedValueの動作の概要
データベースは常に照会され、使用可能な最後の値が返されますか? 2つの異なるプロセス(異なるHibernateアプリケーション)が同時に同じテーブルにアクセスする場合、特に自動数値とシーケンスを使用するとどうなりますか?
@GeneratedValueの正確な説明と、データベースの観点から何が起こるかに関するさまざまな戦略を見つけるのに苦労しています。Hibernate:@GeneratedValueの動作の概要
データベースは常に照会され、使用可能な最後の値が返されますか? 2つの異なるプロセス(異なるHibernateアプリケーション)が同時に同じテーブルにアクセスする場合、特に自動数値とシーケンスを使用するとどうなりますか?
JPA @GeneratedValueを参照していることを前提としています。
@GeneratedValue
アノテーションは、そのフィールドの値を調べる方法をORMに指示します。例えば
:
@Id
@GeneratedValue(strategy=SEQUENCE, generator="CUST_SEQ")
@Column(name="CUST_ID")
public Long getId() { return id; }
Example 2:
@Id
@GeneratedValue(strategy=TABLE, generator="CUST_GEN")
@Column(name="CUST_ID")
Long id;
を理解するために重要なことに生成された値は、戦略と生成された値の戦略何が起こるかを決定していることです。上記の例では、SEQUENCE生成戦略は、オブジェクトを初めて保存するときに、ORMがデータベースにシーケンスの新しい値を要求することを意味します。 2番目の例では、表生成戦略を指定しています。これは、ORMがIDの値を決定するために表の行を参照することを意味します。例2では、「CUST_GEN」と呼ばれるジェネレータを参照しているため、どのテーブルの詳細が表示されていません。
あなたが実行するジェネラルジェネレータ。
を行う前に、UUIDを生成 - データベースの種類
@Id
@GeneratedValue
@Column(name="CUST_ID")
public Long getId() { return id; }
で使用している場合
http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/リンクを参考にしてください。しかし、あなたが探しているものが何であるか教えていただければ、私はあなたをより良く助けることができるかもしれません。ここに@GeneratedValue注釈についての詳細はありません...同じトピックhttp://elegando.jcg3.org/2009/08/hibernate-generatedvalue/に関するこのブログ記事が大好きです。彼は良い仕事を説明しています。
Hibernateが生成される主キーの種類を決定し、それはあなたが使用しているデータベースに依存します。デフォルトでは
、@Id
注釈が自動的に使用される最も適切な主キー生成戦略を決定しますが、あなたは私がここで議論するつもりはない2つのパラメータ戦略と発電機を取る@GeneratedValue
注釈を適用することによって、これをオーバーライドすることができ、デフォルトのキー生成戦略だけを使用しましょう。 Hibernateに、使用するジェネレータタイプを決定させることで、コードを異なるデータベース間で移植することができます。
質問は完全にスキップした「how @GeneratedValue works」について説明することでした。 –
dbの視点 – javaNoober
からIDENTITYまたはSEQUENCEに対応していただきありがとうございます –