我是hibernate的新手。我不明白以下兩個主鍵生成策略:@GeneratedValue(strategy =「IDENTITY」)vs. @GeneratedValue(strategy =「SEQUENCE」)
- 身份
- 序列
有人可以請解釋如何這兩個工作,就是這兩者之間的區別?
我是hibernate的新手。我不明白以下兩個主鍵生成策略:@GeneratedValue(strategy =「IDENTITY」)vs. @GeneratedValue(strategy =「SEQUENCE」)
有人可以請解釋如何這兩個工作,就是這兩者之間的區別?
報價Java Persistence/Identity and Sequencing:
身份測序使用特殊身份列在數據庫中,以允許數據庫插入其行,當一個ID自動分配給對象。許多數據庫都支持標識列,例如MySQL,DB2,SQL Server,Sybase和Postgres。 Oracle不支持IDENTITY列,但可以通過使用序列對象和觸發器來模擬它們。
用簡單的英文表示:您在表格中最多標記一個ID
列作爲IDENTITY。數據庫引擎將自動爲您提供下一個可用的值。
和:
序列對象使用特殊的數據庫對象生成的ID。序列對象僅在某些數據庫中受支持,如Oracle,DB2和Postgres。通常,SEQUENCE對象具有名稱,INCREMENT和其他數據庫對象設置。每次選擇
<sequence>.NEXTVAL
時,序列都會遞增INCREMENT。
序列更靈活,稍微複雜一些。您可以在數據庫中定義一個額外的對象,位於表格,觸發器等稱爲的序列。序列基本上是命名計數器,您可以在查詢內部的任
[Oracle自12c版以來支持IDENTITY策略](https://oracle-base.com/articles/12c/identity-columns-in-oracle-12cr1) – user11153