中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

安仁县| 乌审旗| 阳江市| 南昌市| 桂林市| 扶沟县| 深圳市| 天门市| 建德市| 浪卡子县| 湄潭县| 沈丘县| 武安市| 澜沧| 五指山市| 洛南县| 五大连池市| 大埔区| 龙南县| 盐亭县| 杨浦区| 屯昌县| 托克逊县| 神农架林区| 左云县| 邯郸市| 西乌珠穆沁旗| 苍梧县| 九龙坡区| 涪陵区| 洛宁县| 郧西县| 星子县| 长兴县| 山西省| 左权县| 和政县| 惠水县| 盱眙县| 河东区| 麻城市|