Java_SSH之Hibernate_002_02:SQL、Hibernate和对象类型怎么对应、hibernate主键的生成策略(☆)讲解

系列文章目录

一、SQL、Hibernate和对象类型对应

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
在这里插入图片描述
在这里插入图片描述
代码里面怎么去对应数据库里面的数据类型
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、hibernate主键的生成策略讲解——重点

在这里插入图片描述
在这里插入图片描述

generator:id的生成策略
increment:也会自动增长id,但是它的这种增长是自己Hibernate实现
执行select max(id) 查询,这种会有线程并发问题(多线程同时执行max,哪个最大,直接懵逼,id同时加1,后面必有一个插不进去)
简单来说这种就是按照最大的后面来,如果id是 1,2,15,后面它就会自动生成16
sequence:一般在oracle数据库才用
hilo:hibernate自己实现的id规则【不用,不用学】
native:【经常常用】
如果是mysql数据库,id会自动增长-不会去查max Id 是mysql内部实现的,不存在线程问题
(假如,我们插入两条数据,id分别为1,2,此时我们吧2删了,再插入,会是3,而不是2,因为mysql内部记录了2已经用过了,而increment则会是2,因为max是1,1+1 是2,它们的原理是不同的)
如果是oracle数据库,会自动增长,sequence
uuid:【经常常用】一个长字符串,需要把模型的id改成字符串
保存的时候,不用自己设置ID,hibernate会设置id
assigned:要手动设置id属性(id可以不是String类型,也可以是String类型)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:uuid的模型是有要求的,改完数据类型之后,get、set 也要重新改一下 返回的数据类型,也应该是String,并且数据库也要是String类型对应的类型
我们直接把表删了,让hibernate自动帮我们设置数据类型即可
在这里插入图片描述
注意如果原来的表存在可能插不进,要删掉,因为原来的表 id是 int类型 我们uuid的 id数据类型 是String
在这里插入图片描述
在这里插入图片描述
assigned:要手动设置id属性注意,id可以不是String类型,也可以是String类型或者int类型
在这里插入图片描述
在这里插入图片描述

总结

1、基本类型无法表达null,包装类默认值是null,当对于默认值有业务意义的时候需要使用包装类,很多情况下我们都需要使用包装类
2、我们一定要知道有一个概念,那就是数据类型实际上是有一个对应关系的
3、generator:id的生成策略,这三个常用的必须掌握
native:【经常常用】
如果是mysql数据库,id会自动增长
如果是oracle数据库,会自动增长,sequence
uuid:【经常常用】一个长字符串,需要把模型的id改成字符串
保存的时候,不用自己设置ID,hibernate会设置id

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值