Jim*_*son 9 java hibernate jpa
我在一个项目上使用Hibernate,我很困惑何时使用org.hibernate.annotations.CascadeType以及何时使用javax.persistence.CascadeType注释.
例如,当我应该使用这样的东西时:
@OneToMany(fetch = FetchType.LAZY, cascade = javax.persistence.CascadeType.ALL)
Run Code Online (Sandbox Code Playgroud)
vs这样的事情:
@OneToMany(fetch = FetchType.LAZY)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
Run Code Online (Sandbox Code Playgroud)
我还读过,hibernate将忽略一对xxxx注释中的某些级联类型.有人能让我直截了当吗?
一般来说,在使用 Hibernate 时您会发现许多此类重叠的示例。造成这种情况的原因可能有多种。要么是因为遗留原因(Hibernate 在 JPA 标准化之前创建了注释),要么是因为 Hibernate 支持的功能多于 JPA 标准允许的功能,要么是因为它们在语义上仅略有不同。
在这种情况下,Hibernate 文档非常清楚为什么@Cascade存在 when@OneToMany(cascade=...)是标准。Hibernate 注释 ( @Cascade) 为您提供了比标准 JPA 注释更多的选项,并且它的语义也略有不同。
只要您不需要某些特殊的 Hibernate 功能/语义,您应该始终更喜欢使用标准 JPA 注释。