系列文章目录

文章目录

  • ​​系列文章目录​​
  • ​​一、SQL、Hibernate和对象类型对应​​
  • ​​二、hibernate主键的生成策略讲解——重点​​
  • ​​总结​​

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

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


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


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


代码里面怎么去对应数据库里面的数据类型

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


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

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

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

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


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

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类型)

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


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


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


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


注意:uuid的模型是有要求的,改完数据类型之后,get、set 也要重新改一下 返回的数据类型,也应该是String,并且数据库也要是String类型对应的类型

我们直接把表删了,让hibernate自动帮我们设置数据类型即可

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


注意如果原来的表存在可能插不进,要删掉,因为原来的表 id是 int类型 我们uuid的 id数据类型 是String

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


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


assigned:要手动设置id属性注意,id可以不是String类型,也可以是String类型或者int类型

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


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

总结

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