第一个种是Address找到自己的user_id,扔给User,让User自己去再查一次,即使在有缓存的前提下,每遇到一个新的user_id,就会查一次,对比hibernate的话,相当于多对一eager查询,用hql语句,但是没有设置batchsize,或者用joinfetch的方式查询,所以就会查询很多次的User。
其实关联查询这种东西,无非是先取一边的对象,再根据一定的规则,和自己这边的关联id,取另一边的对象,
如果joinfetch 就把关联表中的所有对象一次取出。
mybatis的第二种方法就是join fetch 但是特定的值要自己设置进对象的属性,才能得到完整的对象。