优化Hibernate所鼓励的7大措施

来源:牛客网

1、什么是延迟加载?
  • 定义:延迟加载(lazy load)是Hibernate3 关联关系对象默认的加载方式,延迟加载机制是为了避免一些无谓的性能开销而提出来的。就是只有当真正需要数据时,才真正的执行数据加载操作。延迟加载是 hibernate 中用于提高查询效率的一种措施,它的对立面是 立即加载。
2、如何实现延迟加载?
  • Hibernate 2 实现延迟加载有 2 种方式:
    • 实体对象
    • 集合
  • Hibernate 3 又引入了一种新的加载方式:属性的延迟加载
  • 一般使用load()的方法来实现延迟加载:
    • 当调用load方法加载对象时,返回代理对象,等到真正用到对象的内容时才发出sql语句
3、Hibernate 其他介绍
  • Hibernate 使用 Java 反射机制,而不是字节码增强程序来实现透明性
  • Hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
4、优化 Hibernate 所鼓励的 7 大措施
  • 1.尽量使用多对一,避免使用单项一对多
  • 2.灵活使用单向一对多
  • 3.不用一对一,使用多对一代替一对一
  • 4.配置对象缓存,不使用集合缓存
  • 5.一对多使用Bag ,多对一使用Set
  • 6.继承使用显示多态 HQL:from object polymorphism="exlicit" 避免查处所有对象
  • 7.消除大表,使用二级缓存

使用单向一对多关联,不使用双向一对多
Hibernate鼓励使用双向一对多关联,不使用单向一对多关联。单向一对多关联映射是在one端维护关系的,必须先保存many端后才可以保存one端,所以在保存many端时该端不知道one端是否存在相应的数据,所以只能将维护的关系字段设置为null,如果为非空则无法保存。因为是one端维护关系,所以在保存one端时,会发出多余的update语句维护many端的外键关系。

猜你喜欢

转载自blog.csdn.net/qq_18975791/article/details/80733653