当前位置:  开发笔记 > 编程语言 > 正文

org.hibernate.annotations与javax.persistence

如何解决《org.hibernate.annotations与javax.persistence》经验,为你挑选了2个好方法。

使用来自的注释是不是一个坏主意

javax.persistence包

而不是使用

org.hibernate.annotations注释

我知道使用javax.peristence确实引入了另一种依赖.但如果我忽视这一点,那么利弊是什么?



1> Thilo..:

相当于对手.

Hibernate是Java Persistence API的一个实现,在可能的情况下,您应该使用标准注释(在javax.persistence中).这样,理论上您可以在其他JPA实现上运行代码.

只有当您需要特定于Hibernate的功能时,才应使用Hibernate注释.

额外的依赖关系只在JPA接口/注释jar文件上,非常轻.



2> gavenkoa..:

另一个缺点:

http://www.mkyong.com/hibernate/cascade-jpa-hibernate-annotation-common-mistake/

在这里:

@OneToMany(fetch = FetchType.LAZY, 
  cascade = {CascadeType.PERSIST,CascadeType.MERGE }, 
  mappedBy = "stock")
public Set getStockDailyRecords() {
    return this.stockDailyRecords;
}

有了这个:

stockDailyRecords.setStock(stock);        
stock.getStockDailyRecords().add(stockDailyRecords);

session.save(stock);
session.getTransaction().commit();

不能像@OneToManyJPA 那样工作,它期望JPA级联– javax.persistence.CascadeType。但是,当使用Hibernate会话保存它时,org.hibernate.engine.Cascade将进行以下检查:

if ( style.doCascade( action ) ) {

和Hibernate保存过程将导致ACTION_SAVE_UPDATE操作,但是JPA将传递ACTION_PERSISTACTION_MERGE,它将不匹配并导致级联无法执行。

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有