登录 | 注册

优就业Java教程-Hibernate总结(一)

首页 > 程序开发 > Java 2016-10-31 16:38:54 浏览次 共 条评论

收藏赞(分享

Hibernate为了提高性能,提供了缓存与快照机制。

它的缓存分为一级缓存与二级缓存。

 

Hibernate一级缓存:当一个事务中执行一次Sql语句时,就将返回的结果存储在Session中的Map集合中(当然,还有快照)。

测试:(以下所有代码处于try/catch块中)

查询:包括get(),load(),原生Sql,HQL,Criteria(比HQL更面向对象的一种查询方式)

总结查询:

增加:save(),persist()

这里两个方法的区别是:执行方法之前设置主键问题与执行方法之后返回主键问题。

1,persist(),把一个瞬态的实例持久化,但是并"不保证"标识符(identifier主键对应的属性)被立刻填入到持久化实例中,标识符的填入可能被推迟到flush的时候。

2,save(), 把一个瞬态的实例持久化标识符,及时的产生,它要返回标识符,所以它会立即执行Sql insert。

删除:delete()

当然,如果感觉为了删除一个数据,还的执行查询操作降低性能,可以这样:

更新:update()

但有时候,我们不需要执行s.update(对象)方法,这这涉及到对象的持久态一个特性(也有【快照】作用其中):

当对象为持久态时,当它更新数据时,框架会拿它与之前的快照作比较,若相同,则无动作;若不同,则自动更新至数据库。

总结:

有一点非常重要:在事务中虽然形成了Sql语句,但只有事务.commit()之后才会真正操作数据库。

Hibernate关于数据库的操作,需要弄清楚【缓存,快照,对象三态】等等些许东西。

对象三态:

* 瞬时态:和hibernate没关联,在数据库表中没有对应的id

* 持久态:和hibernate有关联,在数据库表中有对应的id---OID

* 游离态:和hibernate没关联,在数据库表中有对应的id

免责声明:本文来源于博客园,由网友提供或网络搜集,仅供个人研究、交流学习使用,不涉及商业盈利目的。如有版权问题,请联系本站管理员予以更改或删除。优知网会定期发布程序开发相关趋势文章,包括 PHP Android IOS Java C/C++ 软件测试 大数据 Linux 全栈开发 等领域,敬请关注!

分享到
人收藏5 收藏
 
我要评价
相关文章
优就业Java教程-最流行的编程语言JavaScript 能做什么?
优就业Java教程-最流行的编程语言JavaScript 能做什么?
优就业Java教程-Java内存模型深度解读
优就业Java教程-Java内存模型深度解读
优就业Java教程-给Java新手的一些建议----Java知识点归纳(Java基础部分)
优就业Java教程-给Java新手的一些建议----Java知识点归纳(Java基础部
优就业Java教程-Java 远程通讯技术及原理分析
优就业Java教程-Java 远程通讯技术及原理分析
 
 

咨询中心

优就业微信扫一扫
微信扫一扫

400-650-7353

加入官方微博