1.Hibernate的配置文件

Hibernate.cfg.xml

Dept.hbm.xml

2.CRUD的方法名称和参数类型

Save(Object obj)

Delete(Object obj)

Update(Object obj)

Get(Class clazz,Serializable ser)

Load(Class clazz,Serializable ser)

3.提取工具类

HibernateUtil{

Factory

session

Public static Session getSession(){

Cfg=new Configuration().configure();

factory= cfg.buildSessionFactory();

Session session=factory.openSession();

Return session;

}

}

4.@Before和@After

注解

5.ORM (Object Relational Mapping)对象关系映射

对象:Java中的业务视图

关系:底层二维表

映射:小配置

6.主键生成策略

Uuid: 32位的16进制数

1) sequence

编号列生成由底层数据库提供序列,来完成主键自增,要求数据库必须支持序列 mysql不支持,oracle支持

create sequence myseq; 创建序列

insert into customer values (myseq.nextval); 插入数据时调用序列,序列+1

2) native

采用数据库支持自增策略, mysql就用identity 、oracle就用sequence

策略1) ---> 策略4) 要求数据库主键必须为数字 ,因为只有数字才能自增

3) uuid

32位 唯一字符串, 主键使用varchar 类型

真实开发中,用程序提供uuid值

4) assigned

手动指定主键的值,该主键一般有实际意义,例如订单单号(20160114-A002)

--------------------------------------------------

7.Get()和load()的区别

Load()没有使用对象的其他属性的时候,没有SQL  延迟加载

Get() :没有使用对象的其他属性的时候,也生成了SQL  立即加载

①:如果数据库中,没有 OID 指定的对象。通过 get方法加载,则返回的是一个null;通过load加载,则返回一个代理对象,

如果后面代码如果调用对象的某个属性会抛出异常:org.hibernate.ObjectNotFoundException;

  ②:load 支持延迟加载,get 不支持延迟加载。

是什么导致了延迟加载?

解析:是因为内存中构建了代理对象。

stu.getClass()

Handler:处理人

延迟加载原因:代理对象

一级缓存

8.脏检查

脏检查:当事务提交时,Hiberante会对Session中持久状态的对象进行检测,判断对象的数据是否发生了改变

依据:

为什么要进行脏检查?

解析:如果对象发生了改变,就需要将改变更新到数据库中,以确保内存中的对象与数据库中的数据保持一致。

如何脏检查?

  解析:当一个Dept对象被加入到Session缓存(有人又称为 一级缓存  后者是内部缓存)中时,Session会为Dept对象的值类型的属性复制一份快照。

当Session刷新缓存时,会先进行脏检查,即比较Dept对象的当前属性与它的快照,来判断Dept对象的属性是否发生了变化。

如果发生了变化,Session会根据脏对象的最新属性值来执行相关的SQL语句,将变化更新到数据库中。

Session具有一个缓存,可以管理和跟踪所有持久化对象,对象和数据库中的相关记录对应。

快照:

9.session(线程非安全)  SessionFactory(线程安全)

PDF:

Session是线程非安全的

线程安全:多个线程访问同一个资源的时候,

线程非安全:

10.Session:

可以简单理解成相当于一个Connection

Session是持久化对象的容器

一级缓存(session)

如果两次get()同一个OID,那么第二次不再SQL,说明了一级缓存的

存在性。一级缓存事务级别的事务

Load()和get()都可以给缓存放入数据,和取出数据

最新文章

  1. Python学习【第十一篇】模块(1)
  2. 程序中保存状态的方式之ViewState
  3. 无废话ExtJs 入门教程十六[页面布局:Layout]
  4. cassandra CQL 常用操作
  5. alt属性
  6. iOS10之后openURL:方法过期之后的替代方法及使用
  7. java经验总结二:ORA-08103: 对象不再存在
  8. Bootstrap 3 支持 IE8
  9. HDU 1711 Number Sequence(算法验证)
  10. iOS回顾笔记(04) -- UIScrollView的基本使用详解
  11. 《Shell脚本学习指南》学习笔记之变量、判断和流程控制
  12. android 学习 Spinner控件的使用
  13. Python学习笔记3
  14. Codevs1380没有上司的舞会_KEY
  15. Python简单爬虫Requests
  16. Spring Boot 2.0 教程 | 配置 Undertow 容器
  17. Linux 应用层的时间编程【转】
  18. mysql连表分组报错---- sql_mode=only_full_group_by问题解决
  19. 《Gradle权威指南》--Android Gradle多渠道构建
  20. [cloud][sdn] LBaaS/neutron / Octavia

热门文章

  1. 数据结构:顺序表(python版)
  2. [moka同学收藏]Vim升华之树形目录插件NERDTree安装图解
  3. php实现设计模式之 解释器模式
  4. ABP中使用Redis Cache(1)
  5. MVC基础
  6. 《IBM BPM实战指南》读书笔记
  7. $.extend()的深拷贝和浅拷贝详细讲解
  8. iOS 开发学习资料整理(持续更新)
  9. 如何通过ArcMap Add-in机制实现十字叉线地理配准工具
  10. Material Design Animation