柚子快报邀请码778899分享:day31

http://yzkb.51969.com/

一、多对多

在对象中如何表达多对多关系:

两方都使用集合表达。即两个对象中互相持有对方的集合的引用。

小结:

操作:

inverse:本方是否要放弃维护外键关系(默认值是false)

cascade:是否需要级联操作(有5个值)(没有默认值)

save-update    级联保存和级联修改

      delete    级联删除

      delete-orphan    孤儿删除

      all    save-update + delete

      all-delete-orphan save-update + delete + delete-orphan

二、检索策略

1、类级别

load方法 => 受class元素上的lazy属性影响

2、关联级别

1> 一对多:根据客户去找订单

fetch:

select (默认值) 使用普通select语句查询集合内容

join 使用表连接语句查询集合

subselect 同时加载多个对象的集合时,使用子查询语句

lazy:

true (默认值)需要使用时才会去加载

false 立即加载

extra 极其懒惰,当调用集合的size时,Hibernate只会发送count语句

小结:

使用join时,lazy属性失效,都是立即加载。

使用select时,lazy属性正常。

使用subselect,除了在加载多个集合时使用子查询语句外,其他同select。

2> 多对一:根据订单去找客户

fetch:

select (默认值) 使用普通select语句查询集合内容

join 使用表连接语句查询集合

lazy:

false 立即加载

proxy 交给对方的类加载策略决定,受class元素上的lazy属性影响

3、批量检索

batch-size="n" 决定一次加载几个对象(客户)的集合数据

三、查询总结

1、get/load 根据oid进行检索

2、对象导航图检索

3、Sql语句查询

4、Hql语句查询

5、Criteria查询(了解)

四、连接池、事务、锁

c3p0连接池

1、导包,c3p0-0.9.1.jar 在 Hibernate 的类库中optional文件夹下

2、在hibernate.cfg.xml 进行配置

3、配置c3p0中的具体使用的参数

事务

隔离级别设置: hibernate.connection.isolation 1 2 4 8

悲观锁

读锁:select * from xxx lock in share mode; => get(clazz, id, LockOption.READ);

写锁:select * from xxx for update; => get(clazz, id, LockOption.UPGRADE);

乐观锁

1、实体类中加入版本控制属性(类型是Integer)

2、在Xxx.hbm.xml,配置上version元素

 

柚子快报邀请码778899分享:day31

http://yzkb.51969.com/

好文推荐

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。
大家都在看: