org.hibernate.annotations vs. javax.persistence
使用
javax.persistence package
而不是使用
org.hibernate.annotations annotations
我知道使用确实引入了另一种依赖关系。但是,如果我忽略了这一点,那么利弊是什么?javax.peristence
使用
javax.persistence package
而不是使用
org.hibernate.annotations annotations
我知道使用确实引入了另一种依赖关系。但是,如果我忽略了这一点,那么利弊是什么?javax.peristence
恰恰相反。
Hibernate是Java Persistence API的实现,在可能的情况下,你应该使用标准注释(在javax.persistence中)。这样,理论上您可以在其他 JPA 实现上运行代码。
仅当需要特定于休眠的功能时,才应使用休眠注释。
额外的依赖性只依赖于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 Set<StockDailyRecord> getStockDailyRecords() {
return this.stockDailyRecords;
}
有了这个:
stockDailyRecords.setStock(stock);
stock.getStockDailyRecords().add(stockDailyRecords);
session.save(stock);
session.getTransaction().commit();
不会像JPA那样工作,它需要一个JPA级联 - 。但是,当您使用休眠会话保存它时,将执行以下操作:@OneToMany
javax.persistence.CascadeType
org.hibernate.engine.Cascade
if ( style.doCascade( action ) ) {
休眠保存进程将导致操作,但 JPA 将传递 a 和 ,它将不匹配并导致级联无法执行。ACTION_SAVE_UPDATE
ACTION_PERSIST
ACTION_MERGE