有5中方案:
1,延迟加载;
2,外链接;
3,批量处理;
4,集合过滤;
5,投影查询
1,“延迟加载”,就是lazy属性。
lazy属性可以设置在class,set,many-to-one上,但一般class上没有必要设置,一般载入class,目的就是要读他的属性的,set可以设定lazy=true,可以提高性能。many-to-one的lazy好像是假的,好像是由one一方的class上的lazy来决定是否延迟加载的。
结论:在多对多和一对多的set元素上设置lazy=true。
2,“外链接”,就是outer-join属性。
一般在set上优先考虑“延迟加载”,这时需要设置outer-join=false。
在many-to-one上,一般one的一方的lazy是false,而默认outer-join=auto,这是会进行外连接。
结论:outer-join在set上设为false,其他的不用管。
3,“批量处理”,就是batch-size属性。
一般设为3-10,可以减少sql语句,提高性能。具体大小需要多做试验才能决定。
结论:在class和set元素上设定batch-size的值。
待续