hibernate batch-size抓取的问题。
王二北 2012-09-17 03:45:11 项目中有一个应用,A和B是一对一的关系,B通过外键关联A。并设置lazy=true。在页面上显示B的集合信息,同同时还要关联显示B对应的A的信息,如果不做任何处理,在lazy=true的情况下会出现n+1的问题,非常影响性能。所以决定使用batch-size进行优化,也就是在A的<class>上配置batch-size=30。
问题来了,如果正常情况下,每次抓取时应该抓取30个A,也就是会有30个?号,结果查看输出的sql语句,发现最多的一次是第一次有15个问号,也就是第一次抓取了15个A,后面又陆陆续续发出几次sql,每次问号的个数都小于10,数据库中B对应的测试数据大概有个30多条,如果正常情况下,应该发出37/30,应该是两条查询语句啊,不知为什么居然会发出七八条sql语句,且每次都不是按30个差的,很是奇怪,哪位高手了解这个是什么原因的,请帮帮忙吧,谢谢了啊。
B端对A的配置:
<many-to-one name="a" class="com.test.A"
column="aid" lazy="proxy" insert="false" update="false" />
A端class的配置:
<class name="com.test.A" table="t_a" batch-size="30">
求高手指点啊!!!!!!