使用来自的注释是不是一个坏主意
javax.persistence包
而不是使用
org.hibernate.annotations注释
我知道使用javax.peristence
确实引入了另一种依赖.但如果我忽视这一点,那么利弊是什么?
相当于对手.
Hibernate是Java Persistence API的一个实现,在可能的情况下,您应该使用标准注释(在javax.persistence中).这样,理论上您可以在其他JPA实现上运行代码.
只有当您需要特定于Hibernate的功能时,才应使用Hibernate注释.
额外的依赖关系只在JPA接口/注释jar文件上,非常轻.
另一个缺点:
http://www.mkyong.com/hibernate/cascade-jpa-hibernate-annotation-common-mistake/
在这里:
@OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST,CascadeType.MERGE }, mappedBy = "stock") public SetgetStockDailyRecords() { return this.stockDailyRecords; }
有了这个:
stockDailyRecords.setStock(stock); stock.getStockDailyRecords().add(stockDailyRecords); session.save(stock); session.getTransaction().commit();
不能像@OneToMany
JPA 那样工作,它期望JPA级联– javax.persistence.CascadeType
。但是,当使用Hibernate会话保存它时,org.hibernate.engine.Cascade
将进行以下检查:
if ( style.doCascade( action ) ) {
和Hibernate保存过程将导致ACTION_SAVE_UPDATE
操作,但是JPA将传递ACTION_PERSIST
和ACTION_MERGE
,它将不匹配并导致级联无法执行。