Hibernate中session常用方法

1.session.save(实体类) 保存
2.session.get(实体类的字节码文件,变量id)
3.session.update(实体类)
4.session.delete(实体类)
5.查询使用query对象来查询
Query q = session.createQuery(hql)
什么是hql
hql是hibernate的查询语言 ( from 实体类) 不需要写selcet
相对于sql语句,在hql语句中 涉及到表中信息的,都使用实体类和类中的属性代替
List<实体类> 变量 = q.list();

6.和一级缓存相关的方法
6.1
close() 关闭session,说明session已经不能用了
clear() 清除session中的一级缓存,所有缓存在session中的数据全部被清除
区别:clear()方法session还可以用
6.2
evict(Object)清除一级缓存中指定的对象
6.3
refresh(Object) 使用数据库中的数据修改缓存的数据 同时也会修改内存对象 快照是拿缓存中的数据修改数据库 refresh拿数据库中的数据修改缓存
6.4
flush()手动执行快照机制 默认是在事物提交时执行快照机制

7.save和persist的区别
共同点把临时态变成了持久态
区别:
save方法是hibernate提供的
persist方法是jpa规范提供的
jpa规范:java持久化api
该规范的指定有hibernate作为主导
但是,由于他是一个规范,任何支持持久化的orm框架都比寻遵循,hibernate也不能例外
最重要的区别:事物问题
如果有事物的话,两个都是执行保存(把对象有临时态变成持久态)
如果没有事物:
save方法:
Hibernate3执行保存操作,但是但是由于没有事物,则不会提交。事物会自动回滚
hibernate5会在一个内置的事物中执行
persist方法:什么都不会做
8.update和merge
Hibernate中session常用方法
第一步对象从临时态变成永久态
第二部对象从永久态变成托管态
第三部把jvm中的内存对象的值改变
第四部对象从临时态便曾永久态
第五步更新托管态对象报错(因为update方法会先把托管态对象加载到以及缓存中,以及缓冲中已经存在了oid形同的对象)NonUniqueObjectException
解决办法是用merge方法
merge会把两个相同oid的对象数据合并 永远是用临时态或者托管态的对象数据改变持久态的

update时 如果更新的数据。在提交之前被其他程序删除 会报错

转载于:https://blog.51cto.com/13579086/2083774

微信扫码订阅
UP更新不错过~
关注
  • 0
    点赞
  • 1
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值