Hibernate之映射对象标示符(OID)
2015-08-13 10:26
246 查看
1.数据库用主键作为记录的唯一标识
自然主键:将含有业务含义的字段作为主键
代理主键:不具备业务含义的字段作为主键
自动生成代理主键:
(1)把主键定义为自动增长标识符
(2)从序列中获取自动增长的标识符
2.Java对象依据内存地址区分对象
判断方式有两种:
(1)通过“==”号来判断
(2)通过.eqauls()方法来判断
注:equals()方法可以重写,例如String类重来判断内容相同即为同一对象
3.Hibernate根据OID区分对象
Customer c1 = (Customer)session.get(Customer.class, new Long(1));
Hibernate根据OID=1查找数据库为1的记录,保存成Customer类型放到session缓存中
如果再次查找OID=1的信息,则直接从session中获取
通常是由Hibernate和底层数据库给OID赋值,所以setId()应设置为private权限
Hibernate内置标识符生成器:
increment:适用于代理主键,由Hibernate生成,每次自增1
indentity:适用于代理主键,由底层数据库生成,前提是数据库必须支持自增
sequence :适用于代理主键,由底层数据库生成,前提是数据库必须支持序列
hilo :适用于代理主键
native :适用于代理主键,自适应底层数据库生成标示符方式
uuid.hex :适用于代理主键,Hibernate采用128位UUID算法生成
assigned :适用于自然主键,由Java程序生成,而且不能将setId设置为private权限,(避免使用)
select :适用于遗留数据库中的代理主键或自然主键,由数据库的触发器生成
foreign :用另一个关联的对象的标识符作为当前对象标识符,适用于一对一关联关系
Hiberante例子
自然主键:将含有业务含义的字段作为主键
代理主键:不具备业务含义的字段作为主键
自动生成代理主键:
(1)把主键定义为自动增长标识符
(2)从序列中获取自动增长的标识符
2.Java对象依据内存地址区分对象
判断方式有两种:
(1)通过“==”号来判断
(2)通过.eqauls()方法来判断
注:equals()方法可以重写,例如String类重来判断内容相同即为同一对象
3.Hibernate根据OID区分对象
Customer c1 = (Customer)session.get(Customer.class, new Long(1));
Hibernate根据OID=1查找数据库为1的记录,保存成Customer类型放到session缓存中
如果再次查找OID=1的信息,则直接从session中获取
通常是由Hibernate和底层数据库给OID赋值,所以setId()应设置为private权限
Hibernate内置标识符生成器:
increment:适用于代理主键,由Hibernate生成,每次自增1
indentity:适用于代理主键,由底层数据库生成,前提是数据库必须支持自增
sequence :适用于代理主键,由底层数据库生成,前提是数据库必须支持序列
hilo :适用于代理主键
native :适用于代理主键,自适应底层数据库生成标示符方式
uuid.hex :适用于代理主键,Hibernate采用128位UUID算法生成
assigned :适用于自然主键,由Java程序生成,而且不能将setId设置为private权限,(避免使用)
select :适用于遗留数据库中的代理主键或自然主键,由数据库的触发器生成
foreign :用另一个关联的对象的标识符作为当前对象标识符,适用于一对一关联关系
Hiberante例子
相关文章推荐
- 在深入分析:Android在app之间的相互作用(一个,使用Action)
- iPhone屏幕尺寸、分辨率及适配
- 导数据的步骤
- 田径赛马
- Leetcode:Merge Two Sorted Lists(Importance!)
- ASP.NET网站聊天室的设计与实现(第3节)
- hunnu oj 11544 小明的烦恼——找字符串(字符串的最小表示法)
- 后期需要总结的内容
- 8月11日全球域名商(国际域名)解析量排行榜TOP20
- java对象的生命周期及回收
- c# 中的 protected internal 如何在 vc.net 中实现
- 启动Activity的方法
- M - Escape - HDU 3605 - (缩点+最大流SAP)
- OSX 10.11 El Caption USB安装盘制作方法
- 快速幂。。。。。
- 简易的JQuery制作导航栏
- 递归:整数划分的java编程实现
- C++中使用反射动态加载和卸载DLL
- 细数JDK里的设计模式
- 分支定界法(