Hibernate一级缓存

1.1 回顾
session提供 map容器,用于执行一些指定的操作时,进行相应PO对象缓存的。
例如:get(User.class,1)
证明:两次执行get方法,第二次时候不进行select查询。
跟数据库的交互少了,性能就高了

1.2 save方法
状态之前的转变
将瞬时态 转换 持久态。
当OID类型为:代理主键,执行save方法时,将触发insert语句,确定OID的值。直到commit数据才进入数据库。
当OID类型为:自然主键,执行save方法时,此时不触发insert语句,直到commit才触发insert语句,数据进入数据库。
如果OID在数据库中已经存在记录将抛异常。

1.3 saveOrUpdate方法
对象时瞬时态,执行saveOrUpdate,底层执行save方法。如果对象时脱管态,执行saveOrUpdate,底层执行update方法。
OID 代理主键,OID如果没有值,执行save方法;如果有值(setUid(,,)),执行update方法。
这里写图片描述

如果设置oid,但数据库中没有对应记录,将抛异常。
这里写图片描述

这里写图片描述

<id name="uid" unsaved-value="3">
判断OID是否存在,与“unsaved-value”设置内容进行比较,如果没有设置,此内容为类型对应默认值。例如:String null ; int 0等

OID 自然主键(assigned : 自然主键,生成手动设置。例如身份证),先执行select查询,获得主键的值,OID不存在save,OID存在update。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值