第一天

Hibernate是一个持久层ORM框架。两个配置文件,

类名.hbm.xml类的属性和表的列对应

hibernate.cfg.xml核心配置文件

Hibernate相关API:

Configuration配置对象,读取hibernate的xml核心配置,也可以加载映射文件

Sessionfactory工厂对象,在hibernate中起到缓冲区作用,负责hibernate的初始化和建立session对象,它可以将自动生成sql语句,映射数据和可重复利用的数据放入这个缓冲区中,同时它还保存了数据库的所有映射关系,维护了二级缓存

特点:

1线程安全的,可以同一个实例多个线程

2重量级的,不能随便创建和销毁

Session:应用程序和数据库之间交互操作的单线程对象,是hibernate的运作中心,是为持久化数据提供创建读取删除的能力,所有持久化操作必须在session的管理下才可以进行操作

Session实例的两种获得方法

1openSession

2getCurrentSession(优先)

区别:open的要手动关闭,get的那个创建的实例会绑定到当前线程,提交或者回滚的时候会自动关闭

事务,session.beginTransaction开启

commit方法,提交相关的实例

rollback方法,撤销事务操作

第二天

主键类型,自然主键(有业务含义)和代理主键(无业务含义)

session的api,查询get和load的区别

get是立即加载,load是延迟加载

方言:根据配置的方言生成相应的sql语句

主键生成策略uuid和native等

持久化对象的三种状态:

瞬时态,不存在持久化标识OID(相当于主键值),尚未与Hibernate Session关联

持久态,存在持久化OID,加入到了Session缓存中,并且相关联的Session没有关闭,数据库中有对应的记录

脱管态,存在持久化标识OID,并且仍然与数据库中的数据存在关联,只是失去了与当前Session的关联

持久态对象能自动更新数据库

Hibernate的一级缓存,提供运行性能,指的是session缓存,减少对数据库的访问次数

一级缓存的内部结构,快照区,确保一级缓存中的数据和数据库中的数据一致,不一致会执行update语句

第三天

级联操作,双向关联会产生多余的sql语句,

处理方法就是这两个,cascade和inverse,他们区别如下

cascade操作一个对象的时候,是否操作其关联对象

inverse强调的是外键维护权

左外连接:返回包括左表的所有记录和右表中符合连接条件的记录

第四天

使用session的5种查询:

HQL:代表Hibernate的查询操作,针对query来操作,语法像sql语法,但是是完全面向对象的

QBC:完全面向对象,可拓展条件的api,不需要考虑底层实现和sql语句,针对Criteria来操作

SQLQuery:接受sql的查询

对象图导航检索,根据已加载的对象,导航到他的关联对象,前提是映射文件上配置多对一的关系

OID,用get和load方法加载某条记录对应的对象

投影查询:返回指定的列的数据

离线条件查询:脱离session,将dao层的的语句转移到别的层

抓取策略:是提升性能的一种手段,联合延迟加载使用,

抓取策略:查询到某个对象的时候,如何抓取其关联对象,这个可以配置完成,在关联对象的标签上配置fetch属性

类级别的延迟加载我们一般不进行修改

关联级别的延迟加载,通常在<set>和<many-to-one>上进行配置

<set>默认true,采用延迟加载

<many-to-one>默认proxy,的延迟加载取决于一的一方上的lazy属性的值

<set> 默认select,发送普通的select语句

<many-to-one>,默认select,发送普通的select语句查询相关对象

总结fetch和lazy的作用,fetch主要控制抓取对象的时候发送SQL语句的格式的,lazy主要控制查询其关联对象的时候是否采用延迟加载

batch-size批量抓取

Hibernate复习的更多相关文章

  1. Hibernate复习之Hibernate基本介绍

    众所周知.眼下流行的面向对象的对象关系映射的Java持久层框架有MyBatis和Hibernate.他们都是对象关系映射ORM. 解决的主要问题就是对象-关系的映射.域模型和关系模型都分别建立在概念模 ...

  2. hibernate复习第(4)天

    1.hibernate的映射类型.hbm.xml中property中的type属性.这个type属性是表示持久化类中的属性对应数据库中的什么数据类型,用来构建一种映射type的可选值:hibernat ...

  3. hibernate复习第(三)天

    今日要点: 1.继承关系映射 一个表对应一个映射树(subclass) 一个子类一个表,子类只有父类没有的字段(joined-subclass) 鉴别器和内连接结合使用(subclass join) ...

  4. hibernate复习第(二)天

    今日要点: 关联映射 多对一(Employee - Department) 一对多(Department - Employee) 一对一(Person - IdCard) 多对多(teachet - ...

  5. hibernate复习第(一)天

    首先导入jar. 这个版本是3.2.5 开发流程: 1.由Domain object ->mapping ->db (官方推荐) 2.由DB开始,使用工具生成mapping和Domain ...

  6. HIBERNATE知识复习记录4-HQL和QBC

    Hibernate中共提供了三种检索方式:HQL(Hibernate Query Language).QBC.QBE(Query By Example). HQL 是Hibernate Query L ...

  7. HIBERNATE知识复习记录3-关联关系

    先上一张图,关于几种关系映射: 抄一段解释: 基本映射是对一个实体进行映射,关联映射就是处理多个实体之间的关系,将关联关系映射到数据库中,所谓的关联关系在对象模型中有一个或多个引用.关联关系分为上述七 ...

  8. HIBERNATE知识复习记录1-连接及常用方法

    要去面试了,复习一下HIBERNATE的相关知识吧,原来边看视频边写的代码如下,已经分不清先后次序了,大致看一看吧. 先看下总的配置文件hibernate.cfg.xml: <?xml vers ...

  9. Hibernate 知识点复习

    核心接口 1  Configuration接口负责配置并启动Hibernate,创建SessionFactory对象 2  SessionFactory接口负责初始化Hibernate.它充当数据存储 ...

随机推荐

  1. linux下无root 安装activepython到指定目录

    linux下无root 安装activepython 1.下载ActivePython-2.7.8.10-linux-x86_64.tar.gz 包 2.进入非root用户,如bdc用户,解压 [bd ...

  2. Java servlet 实现的简易购物车

    首页 2.购买页 3.购物车页 1. 首页代码 发送一个post请求 <!DOCTYPE html><html lang="en"><head> ...

  3. iOS 在工程内部创建一个静态库target

    当你在开发项目的时候需要把公用的东西打包出来,其他项目方便使用的时候,打包成静态库是你的最优选择,在工程内部开发的时候新建一个target进行静态库的开发可以使你的开发调试更加方便而不是单独新建一个工 ...

  4. ionic框架使用步骤

    nodejs下载:https://npm.taobao.org/mirrors/node一.全局安装ionic: npm install -g cordova ionic 如果安装失败: npm in ...

  5. Python文件读写(open(),close(),with open() as f...)

    Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件读写,也需要注意编码问题 ...

  6. Java的课堂实验

    题目是:用Aplet创建一个小程序,使得当你的鼠标经过图片时,放歌~ 其中,补充知识:1.MouseMotionListener这个和MouseListener这两个监听器要了解以下 2.Aplet这 ...

  7. 虚拟机模拟SSD用于Ceph测试

    一.简单介绍 在一些使用场景中,我们需要使用SSD进行测试,如Ceph的分级,OpenStack多种云硬盘配置.在物理设备受限的情况下,我们可以采用模拟SSD的方式进行 二.SSD的标识 在实际的使用 ...

  8. error: checker javascript/jshint: can’t parse version string (abnormal termination?)”

    vim 安装插件(k-vim方法 )好后 编辑js文件提示错误 可能是nodejs环境没搭建好 或者版本有误 用nvm安装node 后 需要 source ~/.bashrc 或者重新开一个终端 再运 ...

  9. 关于Excel导出实例(适合新手,比较详细)

    需要源代码的可以加我微信好友gqljxg1514 1,首先配置依赖pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0&q ...

  10. oracle监控资源管理器

    资源管理器的配置在一组dba视图显示,主要是如下视图: dba_rsrc_plans 显示计划和状态. dba_rsrc_plan_directives 显示计划指令 dba_rsrc_consume ...