Jspxcms主键生成机制是什么

发布时间:2022-01-19 16:31:51 作者:iii
来源:亿速云 阅读:90

这篇“Jspxcms主键生成机制是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Jspxcms主键生成机制是什么”文章吧。

数据库主键生成策略通常有

其中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主键生成机制是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

推荐阅读:
  1. mybatis自动生成主键
  2. Hibernate主键的生成方式

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

jspxcms

上一篇:QQ邮箱的smtp如何设置

下一篇:lua与javascript的区别有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》