扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
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时 如果更新的数据。在提交之前被其他程序删除 会报错
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流