• hibernate 中持久化标识 OID


    OID 全称是 Object Identifier,又叫做对象标识符

    是 hibernate 用于区分两个对象是否是同一个对象的标识的方法

    标识符的作用:可以让 hibernate 来区分多个对象是否是同一个对象

    hibernate 的主键生成策略:

    • 自然主键:把具有业务含义的字段作为主键,称为自然主键,例如用户表,将 username 作为主键;前提是所有用户的 username 都不会重复,并且不为 null,不允许修改,但一旦出现了username 可以重复的业务需求,就必须修改数据模型,重新定义表的主键,给数据库的维护增加了难度
    • 代理主键:把不具有业务含义的字段作为主键,称之为代理主键,该字段一般取名为 “ID”,通常为整数类型(整数比字符串类型节省更多的空间),但是注意主键溢出问题(一般情况下直接就分库分表存储)
    • lncrement:自动增长,是Hibernate中提供一种自动增长方式,不是数据库中的自动增长。(适用于short、int、long类型的主键),

      • 首先使用select max(cust_id) from cst_customer;将这个最大值+1作为下一条记录的主键。
      • 对于并发访问数据库不适用
    • identity:自动增长,适用于short、int、long类型的主键,使用的是数据库自动增长机制。不是所有数据库都支持自动增长,比如Oracle没有自动增长。

    • sequence :序列,适用于short、int、long类型的主键,使用序列方式完成主键的生成。必须是支持序列的方式的数据库。Oracle的自动增长

    • native:本地策略,根据底层的数据库不同,自动选择使用identity还是sequence。

    • uuid:随机字符串,适用于字符串类型的主键。
    • assigned:Hibernate不维护主键,开发人员需要手动设置主键。

    结论:如果是针对数值型,选择使用 native, 如果是 varchar 类型,可以使用 uuid,也可以不用 hibernate 维护,自己在程序中手动设定唯一非空(assigned)uuid

  • 相关阅读:
    ubuntu中安装monodevelop
    谈谈asp.net中的<% %>,<%= %>,<%# %><%$ %>的使用
    asp.net中的App_GlobalResources和App_LocalResources使用
    cisco通过控制口或者通过远程配置交换机
    匿名函数
    迭代器生成器
    闭包函数,装饰器
    函数之对象和名称空间与作用域
    函数
    文件操作
  • 原文地址:https://www.cnblogs.com/ice-image/p/10718773.html
Copyright © 2020-2023  润新知