好的。我知道它们之间的区别,但是在查询对象属性时,我应该避免使用连接,只需使用fetch或joinfetch。比方说,如果我想要获取一个组的学生列表,我应该查询组并访问学生吗?还是通过与学生连接查询组?或者两者都一样。
我在没有双向关系的情况下工作。
select * from Group where id=??
直到你对group.getStudents()做些什么之前,学生不会从数据库中加载。如果你仍然在事务内部,那么你将从数据库中加载学生;如果你在事务外部,你将得到一个懒加载异常。select g from Group g fetch join g.students
,则会立即从数据库中加载组及其所有学生。