Hibernate之OID

一、SQL--structured query language(结构化查询语句)

*主键--PRIMARY KEY

1.主键非空,也就是说,被设定为主键的列在插入数据的时候就不能为空,如果为空SQL就会报错。

2.主键唯一,也就是说,一个表通过 主键 可以唯一确定 一条记录。

 

*主键选择原则:

1.主键一般都是挑选能够 唯一 表示一条记录的 字段 来做,比如,现在有一个“学生表”里面有“学生编号”、“学生姓名”、“学生年龄”等。

 

根据原则肯定要以“学生编号”为主键。

2.还有一个原则就是 不经常被修改 的 字段 也可以做主键。“学生编号”在对表操作的时候肯定不会被修改所以也比较符合。

 

主键没有什么随便不随便设,一个表最好有一个主键,因为这是个好习惯,而且设置主键,方便对数据进行增删改查。

 

**小结:

主键有三要素:1.唯一 2.非空 3.不可修改

一般,我们在设置主键时,都会设置其为自增。

-------------------------------------------------------------------------------------------------------------------------------------

二、在JAVA中,通过比较 对象引用--对象内存地址 是否相等,或者通过比较 对象的值 是否相等,来判断是否是同一个对象。

1. ==  ,比较 对象的内存地址值 是否相等。

2.equal() ,比较 对象值 是否相等,我们可以通过重写此方法,来达到目的。

 

-------------------------------------------------------------------------------------------------------------------------------------

三、Hibernate为了解决二者之间的不同,使用对象标识符(OID)来标识对象的唯一性。OID是关系数据库中,主键在Java对象模型中的等价物。在运行时,hibernate根据OID来维持Java对象和数据库表中的对应关系。

 

-------------------------------------------------------------------------------------------------------------------------------------

对象标识(Object Identifier)--OID

 

*什么是OID?

为了在系统中能够找到所需对象,我们需要为每一个对象分配一个唯一的表示号。在关系数据库中我们称之为关键字,而在对象术语中,则叫做对象标识(Object identifier-OID).
通常OID在内部都使用一个或多个大整数表示,而在应用程序中则提供一个完整的类为其他类提供获取、操作。

*OID的唯一性

一个 OID必须在一个类层次中保持唯一,理想上应该在所有对象上都唯一。

OID(Object ID)应当没有任何业务相关含义

一个非常关键的问题是OID绝对不应当具有任何业务含义。因为任何有业务含义的列都有改变的可能性,而计算机社团多年来从关系数据库学到的最重要的一个事实之一就是:不要给你的关键字任何意义。如果你的用户决定改变业务含义,也许他们想要增加几个数字或把数字变为字母数字,那么你需要在任何用到这个关键字的地方进行改变。一个表中的主关键字内的任何东西都有可能被其他表作为外键。就算是一个简单的改变,譬如在你的客户号码马上增加一个数字,可能会造成极大的维护上的开销。在关系数据库中,这种OID策略被称之为代理关键字。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值