知识大全 关于hibernate的缓存和CRUD。
Posted 知
篇首语:再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 关于hibernate的缓存和CRUD。相关的知识,希望对你有一定的参考价值。
关于hibernate的缓存和CRUD。 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
hibernate作为一种现在比较流行的轻量级的ORM框架 年开始在国内流行 到目前来说在做持久层上还是占有统治地位的 虽然说丰富灵活的HQL和面对对象的Criteria查询 把程序员从复杂繁琐的JDBC中解放了出来 但作为持久层的框架 它的性能才是最重要的核心问题 而性能的核心在于缓存 由于最近在学习这些 所以就把自己的学到的一点东西拿来与大家分享 希望能起到抛砖引玉的效果
在说这些之前的先说说hibernate实体对象的三种状态
Transient 所谓Transient就是说实体对象在内存中自有存在 与数据库中的记录无关
Persient Persient对象对应数据库中的一条记录 也可以这样理解 如果一个实体对象与某个session发生关联 并处于对应session的有效期内 那它就处于Persient状态
Detached 所谓的Detached就是处于Persient状态的对象对应的session关闭之后的状态
我们平时所说的PO(持久化对象)指的就是位于Persient状态的对象 而VO(值对象)就是指Transient和Detached状态的对象
下面开始说CRUD保存 hibernate中保存的方法很多我主要说说下面几个
save()方法 调用save方法时 首先会在session缓存中查找保存对象如果实体对象已经处于Persient状态 直接返回 否在实行sql操作 并将保存的实体对象加入session缓存(save方法不会把实体加入二级缓存的) 最后对存在的级联关系进行递归处理
saveOrUpdate()方法 和save方法一样首先在session缓存中查找 判断对象是否为为保存状态 如果对象处于Persient 不执行操作 处于Transient执行save操作 处于Detached调用save将对象与session重新关联
这里要注意的是批量操作时要适时对session进行flush操作避免OutOfMenoryError 删除 删除我主要说批量删除 hibernate在进行批量删除前 首先必须将所有符合条件的数据加载到内存中(这是所有ORM框架必须面对的问题 这样主要是为了对目前的内部缓存和二级缓存中数据进行整理 以保存和数据库的一致性)这样就面对这如果操作数据量过大 也会出现OutOfMenoryError 所以推荐使用迭代删除
修改 修改主要谈谈update方法 update和前面的save一样首先还是要进行在内部缓存中查找 要注意两点 Persient状态的实体对象调用update没有任何作用 update的SQL将在session flush()方法中执行
查询 查询是受缓存影响最大的 主要谈一下以下几种查询 load和get 这两者的区别主要是load会在二级缓存中查找 而get在内部缓存中查找不到将跳过二级缓存直接进行sql操作
createQuery()的list()和iterate()方法 list()实际上无法使用缓存的 他对缓存只写不读 而ierate则是首先查找所有符合条件的数据id(首先在本地缓存中查找)在执行相应的select获得对应记录 iterate方法的使用最好是查找的实体对象在缓存已经存在 否则查询性能较低 易产生N+ 现象
cha138/Article/program/Java/ky/201311/28364相关参考
hibernate的缓存和CRUD 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixinz
hibernate二级缓存是由SessionFactory管理所以又叫SessionFactory级缓存它是通过不同的类库来实现的比如ehcacheoscache等和一级缓存一样二级缓存也是用来缓
Hibernate缓存何时使用和如何使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
通过以上的介绍可以看出hibernate主要从以下几个方面来优化查询性能 降低访问数据库的频率减少select语句的数目实现手段有使用迫切左外连接或迫切内连接对延迟检索或立即检索设置批量检索数目
Hibernate缓存机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 缓存是位于应用程序与物
Hibernate获取数据与缓存使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Hibern
第一步添加二级缓存配置文件ehcachexml到项目的src目录 ehcachexml文件可以在hibernatereleaseFinal\\project\\etc目录下找到 第二步配置hi
配置ehcachexml文件放到classpath下 <?xmlversion=encoding=GBK?> <e
Hibernate在解决性能问题方面做得非常好有了它的缓存机制使用第三方缓存和数据库连接池就较好的解决的性能问题但这些还不够hibernate给了开发者足够的自由让开发者自己去控制性能问题 学习
Hibernate在解决性能问题方面做得非常好有了它的缓存机制使用第三方缓存和数据库连接池就较好的解决的性能问题但这些还不够hibernate给了开发者足够的自由让开发者自己去控制性能问题 学习