[知了堂学习笔记]Hibernate总结

  • Hibernate是什么

    • Hibernate是一个ORM、持久层框架,是对JDBC做轻量级封装的框架,同时Hiberbnate的本质是一个反射的实现。
  • ORM是什么

    • O:object R:relations M:mapper
    • 对象关系映射,关系型数据库与对象之间的映射,什么样的表映射成什么样的类,表中的列映射成属性,表中的每一行数据就是这个类的一个对象
    • 比如:mybatis也是ORM框架
    • 除映射对象外,还有VO值对象,值对象在数据传递过程中,是数据集成的对象
  • 持久层是什么

    • 实现持久化操作的层
    • 固化数据就是持久化,把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘,数据库)。
  • Hibernate的配置文件/配置项/注解

    • hibernate.properties
      必须的配置项:

      • jdbc的四个连接
      • 数据库方言配置
        可选的配置项:
      • C3P0连接池的配置项
      • 二级缓存的配置项
      • show_sql
      • 生成表结构的策略配置
    • hibernate映射
      注解和映射文件中的配置就是配置ORM

  • Hibernate的核心接口和类

    • Configuration:读取配置文件
    • SessionFactory:一个数据库对应一个sessionFactory,提供测试连接池,重量级
    • Session:会话
    • Transaction:事务,几句sql语句封装为一组,为一个事务,这几句sql语句之间的关系就是要么全部成功,要么全部失败
    • Query:查询,使用HQL
    • Critirea:查询,面向对象的查询
  • Hibernate开发的几种方式

    • 写DB(表)——-生成映射文件和映射类
    • 写映射文件和映射类——生成DB(表)【官方推荐】
    • 写映射文件——生成映射类和DB(表)
  • Hibernate的id生成策略

    • increment
    • identity
    • sequence
    • hilo
    • seqhilo
    • uuid
    • guid
    • native
    • assigned
    • select
    • foreign
    • sequence-identity
  • Hibernate的集合映射

  • Hibernate的关联关系映射
  • Hibernate的懒加载
  • Hibernate的缓存
  • Hibernate的级联和反转
  • Hibernate的事务
  • Hibernate的优化
  • HQL的使用

面试点
1.openSession()和getCurrentSession()

  • openSession():重新建立一个新的session
  • getCurrentSession():使用当前的session
  • getCurrentSession创建的session会和绑定到当前线程,而openSession不会。
  • getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而openSession必须手动关闭

2.get()/load()

  • load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常;
  • get方法检索不到的话会返回null;

3.Hibernate对象的状态

这里写图片描述

4.懒加载

  • 什么是懒加载
    • 懒加载也就是延迟加载
  • 在哪些情况会使用懒加载
    • load()
    • 关联关系中的对象属性
    • 关联关系中的集合属性
  • 如何解除懒加载
    • lazy =false:set【需要发送两个sql语句】/class【直接做表的连接】
    • Hibernate.initialize()【手动解除】

5.缓存

  • 什么是缓存
    • 介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。
  • 以什么形式存在
    • 大部分 map 键值对
  • 模拟缓存
    这里写图片描述
  • 一级缓存:
    • session缓存,同一个session的操作共享的缓存 ,默认开启
  • 二级缓存:
    • sessionFactory缓存,所有session共享缓存,二级缓存是需要配置的,作用于内存和硬盘中;
    • 配置二级缓存:1.引入jar包;2.启用二级缓存;3.配置二级缓存的提供类;4.配置哪个映射类使用二级缓存和缓存策略
    • ehcache/oscache…

6.级联和反转

  • 级联: cascade
    • 数据的操作,操作有关联关系的数据时,将有关联的数据一并操作
  • 反转:inverse
    • 关系的操作,inverse=true【例如:员工和部门的关系,如果 部门 inverse = true,那么关系交给员工维护】
    • 关系交给谁维护

级联和反转在使用是不会相互影响,但是有一定关系

7.Hibernate的优化

  • Hibernate是对JDBC的一个封装
  • Hibernate简化编码
  • 提供很多机制优化性能
  • 缓存机制
  • 关系映射 :id生成策略、级联、懒加载、反转
  • API的使用:get()/load();list()/iterator()
  • HQL的优化:Hibernate会把HQL翻译为更优化的sql执行
  • 批量的处理

    • 批量保存: save(),save()做批量保存二级缓存应该禁用,一级缓存定期清理
    • 批量删除和修改:delete()/update(),先做查
    • 批量操作: SqlQuery接口,原生sql
  • 数据查询的优化

    • HQL
    • API的选择:get()/load();list()/iterator()
    • 抓取(fetch)策略的选择,跟懒加载有一定重叠,抓取关联关系的属性时的策略
      • 集合:join/select/subselect
      • 关联对象:join/select

请关注“知了堂学习社区”,地址:http://www.zhiliaotang.com/portal.php

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值