您好,登录后才能下订单哦!
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
第一步对象从临时态变成永久态
第二部对象从永久态变成托管态
第三部把jvm中的内存对象的值改变
第四部对象从临时态便曾永久态
第五步更新托管态对象报错(因为update方法会先把托管态对象加载到以及缓存中,以及缓冲中已经存在了oid形同的对象)NonUniqueObjectException
解决办法是用merge方法
merge会把两个相同oid的对象数据合并 永远是用临时态或者托管态的对象数据改变持久态的
update时 如果更新的数据。在提交之前被其他程序删除 会报错
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。