mysql数据库自己维护主键自增和hibernate维护主键自增

mysql数据库自己维护主键自增和hibernate维护主键自增,第1张

您好,increment:代理主键,适合于所有数据库,由hibernate维护主键自增,和底层数据库无关,但是不适合于2个或以上hibernate进程。

identity:代理主键,适合于mysql或ms

sql

server等支持自增的dbms,主键值不由hibernate维护。

sequence:代理主键,适合于oracle等支持序列的dbms,主键值不由hibernate维护,由序列产生。

native:代理主键,根据底层数据库的具体特性选择适合的主键生成策略,如果是mysql或sqlserver,选择identity,如果是oracle,选择sequence。

hilo:代理主键,hibernate把特定表的字段作为hign值,生成主键值

uuid.hex:代理主键,hibernate采用uuid

128位算法生成基于字符串的主键值

assign:适合于应用程序维护的自然主键。

想要实现安全的自增只能使用hibernate维护得自增属性identity,或者使用开发者自己维护id值assign。如果使用identify,经过测试发现使用无论开发者是否给对象的id赋值,hibernate在保存对象时会自动给id赋值(为mysql表中id最大值+1);如果使用assign,用户在保存对象前必须给对象的id赋值,值必须大于等于0,如果等于0时,那么数据表id记录会使用mysql数据库维护的最大id+1,如果大于0时,则表id则为用户设置的对象的id值。

经过实验得出,想要实现mysql的sql语句句式以及最终效果,需要设置hibernate配置文件的id自增属性为assign,如果知道id的话则设置对象的id为已知的id,否则设置id的值为0,。

如果id自增属性为assign,那么hibernate保存对象后,对象的id仍然为保存前设置的值;

如果id自增属性为identity,那么hibernate保存对象后,对象的id为数据库中该条记录的id的值。

在使用MySQL数据库的时候,都碰到过因断电造成数据库损坏的情况,大家都知道,断电或非正常关机是导致MySQL数据库出现错误最常见的原因,如何恢复MySQL数据库是大家都非常头痛的问题。目前有方法可以帮助大家恢复损坏的MySQL数据库吗?

当用户出现断电造成的MySQL数据库丢失损坏时,如果能进入MySQL软件,但是提示错误信息,用户可以通过“系统维护”—“数据库压缩修复”,压缩下数据库(有些软件在“系统设置”—“系统维护”—“数据库备份\恢复”中),这种方法只适合一小部分的数据库故障修复,功能性并不高。

现在网络上有两种比较推荐使用的MySQL数据库恢复方法,一种方法使用MySQL(和PHP搭配之最佳组合)的check table和repair table 的sql语句,另一种方法是使用MySQL(和PHP搭配之最佳组合)提供的多个myisamchk, isamchk数据检测恢复工具。在很多用户看来,这两个方法都比较复杂,并不适合大多数的用户使用。另外,这两种方法并不能有效的恢复MySQL数据库,可能还会造成数据库被进一步损坏,造成大家无法挽回的损失。根据以上几个原因,这两种MySQL数据库恢复方法并不建议大家使用。

数据库被损坏分以下几种情况:

1、严重损坏

2、轻度损坏

3、有些表被损坏或有些表的部分记录被损坏


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/7293452.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-03
下一篇2023-04-03

发表评论

登录后才能评论

评论列表(0条)

    保存