Java 惰性加载在Hibernate中不使用一对一映射

Java 惰性加载在Hibernate中不使用一对一映射,java,hibernate,lazy-loading,one-to-many,one-to-one,Java,Hibernate,Lazy Loading,One To Many,One To One,我引用此链接是为了理解为什么延迟加载不适用于一对一,而适用于一对多 我不明白为什么SET对象在一对多的情况下永远都是空的,就像上面的链接所说的。有人能解释一下吗 我仍然不明白为什么延迟加载在一对多中有效,但在一对一关联中无效。请解释一下。老实说,我直到现在才知道这一点,但我就是这样理解这篇文章的 对于@OneToManyHibernate为集合创建一个包装器,该包装器从不为空。因此,如果另一端没有数据,它将只是一个空集,但仍然不是null 但是对于@OneToOne来说,不能使用包装器(代理),

我引用此链接是为了理解为什么延迟加载不适用于
一对一
,而适用于
一对多

我不明白为什么SET对象在一对多的情况下永远都是空的,就像上面的链接所说的。有人能解释一下吗


我仍然不明白为什么延迟加载在
一对多
中有效,但在
一对一
关联中无效。请解释一下。

老实说,我直到现在才知道这一点,但我就是这样理解这篇文章的

对于
@OneToMany
Hibernate为集合创建一个包装器,该包装器从不为空。因此,如果另一端没有数据,它将只是一个空集,但仍然不是null


但是对于
@OneToOne
来说,不能使用包装器(代理),因为
getCee()
(来自该文章的示例)永远不会返回null,这是不对的
null
对于此属性,表示目标表中没有匹配行,
notnull
表示有匹配行。考虑到这一点,只有当关系是强制性的(
constrated=true
)时,包装器才有意义。

这里的要点是,在实现一对多关系时,关系被表示为一个集合,这是Hibernate为其提供实现的接口,这个实现就是实现延迟加载的


但是,在一对一映射的情况下,Hibernate在任何时候都没有为主类与之具有一对一关系的任意类实现派生类。

一对一关系的默认获取类型是急切的,因此要更改它,必须将字段注释为

@OneToOne(fetch=FetchType.LAZY)