这本书也买了好久,一直没有看,最近用到hibernate,重新看下:
1.持久层介绍
讲到两种模式:装饰模式 代理模式(动态代理)
2.cfg.xml配置
config session
3.O/R映射
基本类型
自定义映射(用户有多个email地址,存放在一个字段)
复合主键(两种方式:1.composite-id 实现equals、hashCode 2.自定义pk对象)
Blob Clob(oracle中由于特殊的实现,需要在insert前,插入空值,读取后再进行操作)
实体映射策略
1)面向设计的划分:姓名、联系方式(地址,电话等)
2)面向性能的划分:用户基本信息、附带信息(例如:图片、附件)h3中可以通过延时加载解决
3)实体层次设计:商品包含(DVD,BOOK)如何存储
4.数据关联
1--n
n--1
1--1
n--n
5.数据检索
检索方式:1.criteria 2.detachedCriteria 3.hql(from User group by age 也返回对象)
加载方式:1.立即 2.延时 3.预先(1条join sql 读取数据) 4.批量(where name in('001','002'))
6.持久化实现
生命周期:
1.自由状态transient (new 出来的对象,未与hibernate发生关联)
2.持久状态persistent (已经与hibernate发生关联,如save,load等,有hibernate进行管理)
3.游离状态detached (session已关闭,或者按规则自行拼凑的一个对象)
povo pojo
实体对象识别:
1.身份识别:主键相同的po,认为是相等的?(如果主键相同,但属性有异,hibernate会自动修改)
2.equals hashCode:id比对,值比对
3.脏数据检查:版本比对
unsaved-value ?(使用Hibernate的id generator生成主键的话,不需要考虑此选项)
7.数据缓存
事务级
应用级
分布式(多个appServer)
8.hibernate数据缓存
内部缓存(session中的私有map维护)
二级缓存 (分布式。。。还是算了吧)
9.collection
set
bag idbag
map
list
10.排序
sort 借助jvm实现
order by 借助sql实现
11.回调、拦截、触发器
lifecycle(onDelete onUpdate) validatable(校验)
interceptor: 相比lifecycle,同为接口,侵入更少
sessionFactory.openSession(it);
listener:未介绍
12.分页(没什么好讲,实现了各个数据库的特性)
13.session管理
----------------------------------先记录到此,下面的暂时用不到,等项目中有使用再来看书