有5中方案:
1,延遲加載;
2,外鏈接;
3,批量處理;
4,集合過濾;
5,投影查詢
1,“延遲加載”,就是lazy屬性。
lazy屬性可以設(shè)置在class,set,many-to-one上,但一般class上沒有必要設(shè)置,一般載入class,目的就是要讀他的屬性的,set可以設(shè)定lazy=true,可以提高性能。many-to-one的lazy好像是假的,好像是由one一方的class上的lazy來決定是否延遲加載的。
結(jié)論:在多對多和一對多的set元素上設(shè)置lazy=true。
2,“外鏈接”,就是outer-join屬性。
一般在set上優(yōu)先考慮“延遲加載”,這時需要設(shè)置outer-join=false。
在many-to-one上,一般one的一方的lazy是false,而默認(rèn)outer-join=auto,這是會進(jìn)行外連接。
結(jié)論:outer-join在set上設(shè)為false,其他的不用管。
3,“批量處理”,就是batch-size屬性。
一般設(shè)為3-10,可以減少sql語句,提高性能。具體大小需要多做試驗才能決定。
結(jié)論:在class和set元素上設(shè)定batch-size的值。
待續(xù)