亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Jspxcms主鍵生成機制是什么

發布時間:2022-01-19 16:31:51 來源:億速云 閱讀:110 作者:iii 欄目:開發技術

這篇“Jspxcms主鍵生成機制是什么”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Jspxcms主鍵生成機制是什么”文章吧。

數據庫主鍵生成策略通常有

  • 自增主鍵。依賴數據庫的功能,mysql、sqlserver有主鍵自增功能,oracle、db2則沒有。

  • 數據庫序列。依賴數據庫的功能,mysql沒有序列。

  • UUID。不依賴數據庫。通過程序產生一個32位的不重復的字符串。由于字符串過于長,作為主鍵容易影響數據庫性能。

  • Table策略。使用一個單獨的數據庫表來記錄其他其他表的主鍵值,模仿數據庫序列的功能。

其中Table策略通用性好,在任何數據庫下都可以通用。在Jspxcms中,這張表的名稱:hibernate_sequences(7.0及之前版本為t_id_table)。里面分別記錄了表名及其相應的ID值。

代碼中的domain實體類中有ID生成方式的注解。以com.jspxcms.core.domain.Info為例:

    @Id
    @Column(name = "f_info_id", unique = true, nullable = false)
    @TableGenerator(name = "tg_cms_info", pkColumnValue = "cms_info", initialValue = 1, allocationSize = 10)
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "tg_cms_info")
    public Integer getId() {
        return this.id;
    }

其中initialValue是主鍵的起始值,allocationSize是JPA一次獲取ID的數量。由于獲取ID需要消耗性能,所以不會插入一條數據就獲取一個ID,而是一次性獲取10個、50個、100個,甚至更多。這會導致ID不連續,比如一次獲取10個ID后,只用了一兩個,程序就重啟了,那剩下的八九個ID就作廢了。

如果第三方程序要插入數據到這些表中,就要非常注意ID的問題。需要自行修改hibernate_sequences表中的ID值,否則會導致主鍵沖突的異常。

需要特別注意的是,hibernate_sequences中的next_val(ID值)是實際使用ID+2*allocationSize,比如當前使用的ID值是100,allocationSize是10,那么ID表中的next_val好像應該110,但實際上是120。

自己修改hibernate_sequences的next_val時需要特別小心,看到next_val為100時,可以使用101作為自己的ID,但應該把next_val改到一個更大值,不是改成102,也不是110,而是要改成120(allocationSize為10的情況下)。而allocationSize默認的值是50,在需要大量插入數據的情況下,程序還會把這個值設置的更大。所以不要怕浪費ID值,把next_val改大一點總是安全的。

以上就是關于“Jspxcms主鍵生成機制是什么”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南昌市| 永济市| 上栗县| 东源县| 平塘县| 罗甸县| 广丰县| 泽州县| 沐川县| 萝北县| 隆昌县| 汉阴县| 河源市| 宕昌县| 土默特左旗| 阳曲县| 东乡县| 泸溪县| 津市市| 白水县| 青河县| 云林县| 塔城市| 静海县| 怀来县| 博乐市| 昭平县| 永德县| 雷州市| 鄂伦春自治旗| 麻江县| 新丰县| 横峰县| 婺源县| 渝中区| 鄂温| 新晃| 长沙县| 敖汉旗| 临桂县| 崇信县|