Hibernate入门(二)配置元素学习

1.一级子元素class(类与表的映射) :
          class元素用于指定对象关系映射中的类与表的关系

name:模型类的全路径名格式
        table:数据库表名
        schema:数据库名 如果配置该属性,在数据库连接配置中可省去数据库名配置;如果不配置该属性,则使用连接字符串url中配置的数据库
2.class子元素id(主键的映射)
     主键映射要配置数据模型OID与数据库表主键关系

常用属性 name:数据模型中的OID,通常使用uuid属性(必须)
      column:数据库表的主键,通常使用uuid字段(可选)
      如省略column配置,则默认column值与name值相同
其他属性:
      type:标识属性或字段的类型(兼容Java、DB、Hibernate类型) length:标识数据库字段的长度
上述两个属性主要用于配合自动生成DDL语句使用

3.id子元素generator(主键生成策略)
     手工控制:(***)
           assigned(不限制类型)
      数据库自动生成
           increment(整型数值类型)
           identity (整型数值类型)
           sequence (整型数值类型)
           native(整型数值类型)(****)
           uuid(字符串类型)(**)
     a. increment:增长(整型数值类型)


increment策略是由Hibernate内部控制生成OID的一种id生成策略
increment策略要求数据库中id字段为整型数值类型
increment策略首先从数据库表中取出当前已使用的最大id值max,然后在此基础上+1,提供给当前要操作数据,完成主键唯一性增长,可兼容任意数据库 increment策略虽然可以保障id的唯一性,但是如果多个连接同时对一个表进行操作时,可能获取到相同的max值,导致相同id的出现,因此需要更多的配置,来控制数据库的并发策略
     b. identity (整型数值类型) : 身份;(****)

identity策略是由数据库底层控制生成OID的一种id生成策略
identity策略要求数据库中id字段为整型数值类型,并且要求设置成自增特性
identity只能应用于数据库提供主键自增策略的数据库实现,不能全兼容所有数据库,MySQL可用
identity策略由数据库底层实现,即便申请了一个id不使用,也不影响下一个id的获取,因此线程安全

     c.assigned: 指定的,赋值的;(不限制类型)       
assigned策略是由程序员手工控制输入数据模型OID的一种id生成策略
assigned策略不限定数据库中id字段的类型
assigned策略无法保障id的不重复性 assigned策略通常配合外部自定义的id生成策略使用,否则将具有很大的风险性
    d.sequence: (整型数值类型) [数]数列,序列; 顺序
sequence策略是由数据库底层控制生成OID的一种id生成策略
sequence策略要求数据库中id字段为整型数值类型
sequence只能应用于提供序列支持的数据库实现,不能全兼容所有数据库,Oracle可用
sequence策略由数据库底层实现,id生成控制交由数据库管理,是线程安全的策略
    e. native: 当地人;(整型数值类型)*****
          
native策略是一种设计性OID生成策略
native会根据你所使用的数据库类型,在下列各种生成策略中自动选择对应的id生成策略
-identity
- sequence
-hilo
     f:uuid(Universally Unique Identifier)
     
uuid策略是由以下4种数据联合计算得出的一种OID生成策略
IP地址 JVM启动时间(精确到250ms)
当前系统时间 JVM提供的计数器(保障唯一)
uuid策略要求数据库中id字段为字符串类型
uuid策略可以保障id的唯一性,因此不具有风险性


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值