91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

江山市| 米易县| 昌都县| 溆浦县| 阳东县| 格尔木市| 平潭县| 南雄市| 贺州市| 吴旗县| 临泽县| 宝兴县| 巫溪县| 长海县| 贵定县| 宣恩县| 含山县| 五指山市| 象州县| 介休市| 射洪县| 襄城县| 达拉特旗| 县级市| 永清县| 威信县| 博乐市| 晋江市| 竹山县| 上林县| 山丹县| 天柱县| 合山市| 四会市| 新化县| 莱西市| 内乡县| 邢台县| 左权县| 彝良县| 巨野县|