一、检索策略
类级别:
load 方法 =》受class 元素上的lazy属性影响
关联级别:
1、一对多,多对多
fetch:
select (默认值)使用普通select
join 使用表连接查询集合
subselect 同时加载多个对象的集合时,使用子查询
lazy:
true (默认值)需要使用时才会加载
false 立即加载
extra 极其懒惰,调用集合的size 时,会发送count 语句
2、多对一
fetch :
select (默认值)使用普通select 语句查询集合内容
join 使用表连接查询集合
lazy:
false 立即加载
proxy 交给对方决定 -》受class 元素上的lazy 属性所影响
3、批量检索
batch-size : n 初始化N个对象的集合
二、查询总结
1、get / loadd 根据oid 进行检索
2、对象视图导航检索
3、Sql 语句查询
4、HQL语句
5、Createria 查询
三、事务,锁,连接池
1、c3p0 连接池
1、导包 -》 Hibernate 的类库中的Optional 文件夹下
2、配置c3p0 核心类到配置文件中
3、配置 c3p0 中的使用的参数
2、事务
- 隔离级别设置: (isolation)
锁
悲观锁
读锁:select * from xxx lock in share mode => get(class,id,LockOptional.READ) 写锁:select * from for update get(class,id,LockOptional.UPGRADE);
乐观锁
1、实体中加入版本控制属性(Integer)
2、Hibernate 中加入Version 元素