hibernate _关联级别策略介绍

一:数据表||实体类

1、数据库表数据

1、Orders表

hibernate _关联级别策略介绍

2、Customer表

hibernate _关联级别策略介绍

2、实体类

1、Orders实体类

hibernate _关联级别策略介绍

2、Customer实例类

hibernate _关联级别策略介绍

二:关联级别

1、集合关联策略

hibernate _关联级别策略介绍

1-0、加载的策略

hibernate _关联级别策略介绍

1-1、lazy="true" && fetch="select"(默认情况)

1、执行44行时<不执行查询集合>

2、执行47行使用时<才加载集合数据>

hibernate _关联级别策略介绍

1-2、lazy="false" && fetch="select"

1、执行44行时,还没有使用集合<就会加载集合数据>

hibernate _关联级别策略介绍

1-3、lazy="extra" && fetch="select"

1、极其懒惰与懒加载基本一致,如获得集合的size,只查询集合的size

hibernate _关联级别策略介绍

1-4、fetch="select" 时

1、执行44行代码,则会使用多表查询出所有的数据,44行之后不会再执行SQL语句

2、当fetch="select" 时lazy无论是 true | false | extra都失效,则都是立即加载

hibernate _关联级别策略介绍

1-5、lazy="true" && fetch="subselect"

hibernate _关联级别策略介绍

1、执行45行代码则使用的子查询,与懒加载

hibernate _关联级别策略介绍

1-6、lazy="false" && fetch="subselect"

1、执行到43行则执行2行sqk查询

2、执行之后的查询则会不执行sql语句

hibernate _关联级别策略介绍

1-7、lazy="extra" && fetch="subselect"

1、极其懒惰与懒加载类型

1、在执行45行才会加载集合SQL查询

hibernate _关联级别策略介绍

2、属性关联策略

hibernate _关联级别策略介绍

1、|-proxy:由该类属性类级别的加载策略 (lazy)进行决定

hibernate _关联级别策略介绍

2-0、加载的策略

hibernate _关联级别策略介绍

2-1、lazy="proxy" && fetch="select"

1、属性类对象加载策略lazy="true"

2、使用42行使用时才会进行懒加载

hibernate _关联级别策略介绍

2-2、lazy="proxy" && fetch="select"

1、属性类对象加载策略lazy="false"

2、执行40行代码时会吧所有的查询出来,后面则不会执行sql语句

hibernate _关联级别策略介绍

2-3、fetch="join"

1、lazy属性值无论是 false | proxy 都会失效

2、执行40行代码时,会使用多表连查,则后面不会执行sql语句

hibernate _关联级别策略介绍

三:总结

1、为了提高fetch应当选择select;lazy应当选择true(使用默认值)

1、no-seesion(seesion关闭)

1、扩大Session的作用范围使用Filter拦截器进行扩展

hibernate _关联级别策略介绍

猜你喜欢

转载自blog.csdn.net/weixin_33853794/article/details/86716175