私は冬眠するのが初めてです。私は、以下の2つの主キーの生成戦略を理解していない:@GeneratedValue(strategy = "IDENTITY")対@GeneratedValue(strategy = "SEQUENCE")
- アイデンティティ
- シーケンス
誰かが説明していただけますどのようにこれら2つのワークとこれら二つの違いは何ですか? Java Persistence/Identity and Sequencingを引用
私は冬眠するのが初めてです。私は、以下の2つの主キーの生成戦略を理解していない:@GeneratedValue(strategy = "IDENTITY")対@GeneratedValue(strategy = "SEQUENCE")
誰かが説明していただけますどのようにこれら2つのワークとこれら二つの違いは何ですか? Java Persistence/Identity and Sequencingを引用
:
アイデンティティ配列決定は、その行が挿入されたとき、データベースが自動的にオブジェクトにIDを割り当てることができるように特殊なIDENTITY列データベース内を使用します。アイデンティティ列は、MySQL、DB2、SQL Server、SybaseおよびPostgresなど、多くのデータベースでサポートされています。 OracleではIDENTITY列はサポートされていませんが、シーケンス・オブジェクトおよびトリガーを使用してシミュレートできます。
平易な英語では、IDENTITYとして表のID
列を1つだけマークします。データベースエンジンはの次に利用可能な値を自動的にあなたに置きます。
そして:
オブジェクトがIDを生成するために特殊なデータベースオブジェクトにを使用してシーケンス。シーケンスオブジェクトは、Oracle、DB2、Postgresなど、一部のデータベースでのみサポートされています。通常、SEQUENCEオブジェクトには、名前、INCREMENT、およびその他のデータベースオブジェクト設定があります。
<sequence>.NEXTVAL
が選択されるたびに、シーケンスはインクリメントによってインクリメントされます。
シーケンスは柔軟性があり、やや複雑です。追加のオブジェクトは、シーケンスと呼ばれるテーブル、トリガーなどの隣のデータベースに定義します。シーケンスは、基本的にはクエリ内のどこでも使用できるcounterという名前です。
[OracleはIDENTITY戦略をバージョン12c以降でサポートしています](https://oracle-base.com/articles/12c/identity-columns-in-oracle-12cr1) – user11153