首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >org.hibernate.annotations对javax.persistence

org.hibernate.annotations对javax.persistence
EN

Stack Overflow用户
提问于 2009-03-31 08:26:40
回答 4查看 28.2K关注 0票数 60

中的注释是否是个坏主意?

javax.persistence包

而不是使用

org.hibernate.annotations注解

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-03-31 08:31:06

恰恰相反。

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

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

额外的依赖只依赖于JPA接口/注释jar文件,而且非常简单。

票数 88
EN

Stack Overflow用户

发布于 2013-07-17 15:57:02

另一个缺点是:

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

在这方面:

代码语言:javascript
复制
@OneToMany(fetch = FetchType.LAZY, 
  cascade = {CascadeType.PERSIST,CascadeType.MERGE }, 
  mappedBy = "stock")
public Set<StockDailyRecord> getStockDailyRecords() {
    return this.stockDailyRecords;
}

在这方面:

代码语言:javascript
复制
stockDailyRecords.setStock(stock);        
stock.getStockDailyRecords().add(stockDailyRecords);

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

因为@OneToMany是来自JPA的,所以它不能工作,它期望JPA级联- javax.persistence.CascadeType。但是,当您使用Hibernate会话保存它时,org.hibernate.engine.Cascade将执行以下检查:

代码语言:javascript
复制
if ( style.doCascade( action ) ) {

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

票数 6
EN

Stack Overflow用户

发布于 2009-12-14 09:10:26

我使用了javax.persistence注释,当我用玻璃鱼替换Tomcat6.0时,Tomcat6.0包含了另一个破坏一切的javax.persistence包。我不认为使用javax.persistence注释是个好主意。上帝知道Tomcat和javax.persistence到底发生了什么事!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/700558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档