您的位置:首页 > 其它

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例子
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: