hibernate _关联级别策略介绍
一:数据表||实体类
1、数据库表数据
1、Orders表
2、Customer表
2、实体类
1、Orders实体类
2、Customer实例类
二:关联级别
1、集合关联策略
1-0、加载的策略
1-1、lazy="true" && fetch="select"(默认情况)
1、执行44行时<不执行查询集合>
2、执行47行使用时<才加载集合数据>
1-2、lazy="false" && fetch="select"
1、执行44行时,还没有使用集合<就会加载集合数据>
1-3、lazy="extra" && fetch="select"
1、极其懒惰与懒加载基本一致,如获得集合的size,只查询集合的size
1-4、fetch="select" 时
1、执行44行代码,则会使用多表查询出所有的数据,44行之后不会再执行SQL语句
2、当fetch="select" 时lazy无论是 true | false | extra都失效,则都是立即加载
1-5、lazy="true" && fetch="subselect"
1、执行45行代码则使用的子查询,与懒加载
1-6、lazy="false" && fetch="subselect"
1、执行到43行则执行2行sqk查询
2、执行之后的查询则会不执行sql语句
1-7、lazy="extra" && fetch="subselect"
1、极其懒惰与懒加载类型
1、在执行45行才会加载集合SQL查询
2、属性关联策略
1、|-proxy:由该类属性类级别的加载策略 (lazy)进行决定
2-0、加载的策略
2-1、lazy="proxy" && fetch="select"
1、属性类对象加载策略lazy="true"
2、使用42行使用时才会进行懒加载
2-2、lazy="proxy" && fetch="select"
1、属性类对象加载策略lazy="false"
2、执行40行代码时会吧所有的查询出来,后面则不会执行sql语句
2-3、fetch="join"
1、lazy属性值无论是 false | proxy 都会失效
2、执行40行代码时,会使用多表连查,则后面不会执行sql语句
三:总结
1、为了提高fetch应当选择select;lazy应当选择true(使用默认值)
1、no-seesion(seesion关闭)
1、扩大Session的作用范围使用Filter拦截器进行扩展