多くのジェネレータクラスは、識別子を生成するためにhttp://www.roseindia.net/hibernate/hibernateidgeneratorelement.shtml にあります。しかし、もし私がインクリメントとシーケンスを見れば、私は違いが何であり、どちらが良いのか分かりません。Hibernateジェネレータクラスのインクリメントとシーケンス?
2
A
答えて
13
Sequence
は、idを生成するためにデータベース・シーケンス(Oracleなど)を使用しますが、increment
は、jvmのidを追跡し、プロセス内でそれを増分します。他のプログラム/人がデータベーステーブルに挿入しようとすると、シーケンスが安全になります。シーケンスを使用するには
:
- データベースがシーケンスをサポートしなければならない(、PostgreSQLのオラクル、DB2を...)
- あなたはシーケンスを作成する必要があります(
CREATE SEQUENCE mySquence;
)
Increment
が少ない方が安全です(しかし、シーケンスをサポートしていないDBには移植性があります)、テストや始動に適しています。プロダクションでの使用にはIncrement
を使用するよりも良い方法があります(例えば、ネイティブ/アイデンティティなど)。
3
私は自動生成値を使用します。 Hibernateはあなたが使用しているDBのための最良の戦略を作り出します。
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
はまた、あなたがあなたのエンティティを変更することなく、HSQLDBのようなメモリDBでシンプルに対してテストできることを意味します。
+0
これは質問に答えません – Karl
0
あなたが質問を言い換えることができます。このライン
@GenericGenerator(name = "increment", strategy = "increment")
@GeneratedValue(generator = "increment")
関連する問題
- 1. Hibernate HQL DB2シーケンス
- 2. DB2でシーケンスを2回インクリメント
- 3. JavaのHibernate ID自動インクリメント
- 4. Hibernateのインクリメント開始番号
- 5. PHPのhtmlジェネレータクラス
- 6. カスタムURLジェネレータクラス
- 7. 構成IDシーケンスhibernateジェネレータ
- 8. 主キーの定義、Hibernateリバースエンジニアリング、Oracleシーケンス
- 9. は(自動インクリメント)における欠損値のシーケンス
- 10. ハイバーネーションアノテーションに割り当てられたジェネレータクラス
- 11. 自動インクリメントIDでHibernateの問題MYSQL 5
- 12. MongoDBで一意のユーザーIDのシーケンスを格納するための自動インクリメント
- 13. サブクラスのHibernateでテーブルごとに異なるシーケンスを指定する
- 14. JPA/HibernateでOracleシーケンスの値が多すぎます
- 15. HibernateのDBシーケンスに文字列をマップする方法
- 16. Jpa - Hibernate @Versionが間違ってインクリメントされました
- 17. hibernateでoracle自動インクリメント・トリガーを使用する
- 18. (シーケンスの)シーケンスのシーケンスを平滑化
- 19. シーケンス図とJava
- 20. とValueError:シーケンス
- 21. DACPACとSQLシーケンス
- 22. アトリビュートとシーケンス
- 23. インクリメントとデクリメント番号
- 24. Zendフレームワーク用のVCARDジェネレータクラスはありますか?
- 25. ウィンドウサイズとシーケンス番号
- 26. hibernateはmysqlテーブルの自動インクリメント制約を生成しません
- 27. OracleはHibernateの代わりにIDのシーケンスをトリガーさせますか?
- 28. mysql自動インクリメントなしインクリメント
- 29. Hibernateはシーケンス私はこのようなクラスを持っている
- 30. NoClassDefFoundErrorとSpringMavenのhibernateのorg/hibernate/ejb/HibernatePersistence
を試すことができますか?あなたが何を求めているのか分かりません。 – brc