高级java工程师-------hibernate的作用和关键点
来源:互联网 发布:apache embedded 编辑:程序博客网 时间:2024/06/09 20:06
一、在ssh框架中hibernate的作用是什么呢?
1、hibernate是一种ORM(对象映射)框架的持久性框架,它是对JDBC做了轻量级的封装,使得程序员可以面向对象思维的对数据库进行操作。
2、支持各种关系数据库,它的级联功能很好的支持着表与表之间的各种关系。
3、与spring整合之后连接数据库的代码和控制事物的代码都统一由spring管理,简化了代码,以及更好的管理事物。
4、hibernate提供一级和二级缓存的功能,极大的提高了性能。
5、hibernate提供方便的API进行CURD,减轻了大量SQL语句的编写。
二、级联关系中重要的属性及意义
1、inverse(由哪一端维护关联关系)
这时inverse值用来标明由谁来维护关联关系。设为true时反转控制角色,即由该 属性关联的对象维护关联关系。
2、casecade(级联删除、存储、更新、all)
all : 所有操作都传递到相关联的对象
save-update 保存和更新传递到相关联的对象
delete 删除操作传递到相关联的对象
delete-orphan : 所有操作都传递到相关联的对象 并删除不再与父对象关联的对象。
3、lazy 懒加载(必须保持session有效否则无法获取,默认为true延迟加载)
lazy=false表示已启动就会将所有关联表的记录加载
lazy=true表示只有调到关联的方法才会加载
三、缓存机制
一级缓存:一级缓存是hibernate默认存在的,不能人为的开启和配置的,就是session缓存。一级缓存的生命周期依赖于session的生命周期
session.evict(对象) 从一级缓存中移除指定对象 session.clear()从缓存中移除所有缓存对象
session.readOnly()
二级缓存:二级缓存是有sessionfactory对象负责管理,是应用级别的缓存,所以生命周期更长,故称为sessionFactory缓存,是跨session的,sessionFactory是单例模式
的对象,所以sessionFactory的所有session都共享二级缓存。
ehcahe中配置需要二级缓存的类
1、query.list和query.iterate的区别?
当缓存中有list的结果时,query.list会不读缓存直接读数据库将结果存入缓存。query.iterate是先获取查询的所有id,然后到缓存中匹配,这种情况下query.iterate效率稍高
当缓存中没有list的结果时,query.list会不读缓存直接读数据库将结果存入缓存。query.iterate是先获取查询的所有id,然后到缓存中匹配,匹配缓存没有对应值时,会再去数据库查询这样效率就偏低。
2、二级缓存的管理
sessionFactory.evict( 指定类型) sessionFactory.evictCollection("集合") sessionFactory.evictEntity(对象) sessionFactory.evictEntity(对象,id)
3、查询缓存
----------------------------------------------------------------------------------------------------------要求严格,参数一至------------------------------------------------------------------------------
四、hibernate优化
1、dynamic-update="true" 或者dynamic-insert="true"
是指更新或者插入记录的时候只针对属性值改变的属性进行更新或者插入,针对性强,从而提高效率
2、延迟加载 lazy loading
1.设置持久化类得加载 默认lazy=true
2.设置集合的加载 默认lazy=true
3.设置属性的加载 默认lazy=false
除了属性 时,lazy=true是指延迟加载,只有当需要时,才去调用数据库获取数据
lazy="false"是指不延迟加载,一次性获取所有的数据,不管调用不调用
副作用:解决org.hibernate.LazyInitializationException
Hibernate.initialize
3、集合对象的抓取策略(fetching strategies)
查询抓取(select fetching)默认值
子查询抓取(subselect fetching)
连接抓取(join fetching)
批量抓取
4、 hibernate中1+n问题
具体问题具体分析 query.list和query.iterate的合理使用
五、hibernate 的search
- 高级java工程师-------hibernate的作用和关键点
- hibernate的作用和关键点
- Hibernate的关键点
- Java String的关键点
- 高级java工程师-----spring的IOC和AOP
- 高级java工程师-----spring的IOC和AOP
- Hibernate关键点整理
- 决定嵌入式工程师薪资待遇的几个关键点
- 帧、关键帧和空白关键帧的作用
- 帧、关键帧和空白关键帧的作用
- 台湾高级Java工程师的薪资
- 高级java工程师的64个要求
- 学好Java关键的几点方法!
- 学好Java关键的几点
- Java 实现断点续传的关键几点
- java基础的关键点记录
- JAVA代码一些关键点的解析
- 高级ios工程师和初级工程师的区别
- 安装imaconfigure: error: not found. Please provide a path to MagickWand-config or Wand-config program.
- UIScrollView的详细讲解
- hdoj1040简单题
- 远程桌面无法登录
- 枚举PCI设备的讨论
- 高级java工程师-------hibernate的作用和关键点
- 写控制台程序时,显示 请按任意键继续...
- hdoj1039简单题、字符串处理
- 前台使用viewbag
- JAVA Annotation
- 软件随想录(local.joelonsoftware.com/wiki)-2002年05月06日 五个世界 - Five Worlds
- hdoj1038简单题
- Socket/TCP粘包、多包和少包, 断包
- ISO/IEC13818-1 TS 格式