1+n问题是面试中经常遇到的问题;
我在这里写下我简单的理解:
1+n问题是在hibernate查询中经常出现的现象,这样不仅效率不高,而且会使得时间上显得慢一点,也就是说,存在没有必要的查询。
出现的情况:
当一个实体类和另外一个实体类存在“一对多”或者“多对一”的情况时,准确的说 是当 fetch=FetchType.EAGER时,就会出现这种问题,
1+n:具体的表现是当查询多的一方的时候,hibernate会默认的将多的那方所对应的一的那方相应的 查出来,但是实际不需要一的那一方,这样就出现了1+n问题。
具体解决方法:
1.将多的那方设为 FetchTpe.LAZY;
2.利用 cretiera进行查询;(后台打印的sql语句就是 3 所述的情况)
3.将两个表进行外连接后在进行查询。
这样就解决了1+n问题;
写给有需要的人。。。