对迫切左外连接检索的限制:在一个select语句中只允许包含一个一对多关联或多对多关联在一个select语句中可以允许包含多个一对一关联或多对一关联Hibernate的配置文件中的hibernate_max_fetch_depth属性来控制外连接的深度hibernate_max_fetch_depth属性的合理取值取决于数据库系统的表连接性能及表的大小,如果数据库的记录少,并且数据库系统具有良好的表连接性能,可以把该值设置的高点通常设为4<set>元素来配置一对多或多对多的关联关系,<set>元素有lazy和outer-join的属性立即检索 如果一对的很多的情况下使用了立即检索的策略就会浪费大量的内存空间,所以一对多的关联不可随意使用立即检索策略延迟检索 应该优先考虑延迟检索批量延迟检索和批量立即检索 设定batch_size属性.在sql语句中会使用or进行批量初始化,batch_size属性不宜设置太大,如果设置太大就会使延迟加载失去了意义迫切左外连接检索 outer-join设置为true 。find方法会忽略映射文件中的迫切左外连接策略。lazy 可选值:true或false默认值:false用法:如果为true,表示使用延迟检索策略,在<class>和<set>中有这个属性outer-join可选值:auto,true,false默认值:在<many-to-one><one-to-one>中是auto,在<set>元素中为false用法:如果为true,表示使用迫切左外连接策略,在<many-to-one><one-to-one><set>元素中包含这个属性batch-size可选值:整数值 默认值:1用法:设定批量检索的数量,仅适用于关联级别的立即检索和延迟检索,在<class><set>元素中包含此属性 Hibernate还允许在应用程序中以编程方式显示设定检索策略,程序代码中的检索策略会覆盖映射文件中的检索策略检索策略的作用域 可选的检索策略 默认的检索策略 受影响的Session的检索方法 类级别 立即检索 延迟检索 立即检索 Load() 关联级别 立即检索 延迟检索 左外连接检索 多对一或一对一为外连接检索 Load(),get(),find() 一对多或多对多为立即检索 |