使用来自的注释是不是一个坏主意
javax.persistence包
而不是使用
org.hibernate.annotations注释
我知道使用javax.peristence确实引入了另一种依赖.但如果我忽视这一点,那么利弊是什么?
Thi*_*ilo 73
相当于对手.
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 Set<StockDailyRecord> getStockDailyRecords() {
return this.stockDailyRecords;
}
Run Code Online (Sandbox Code Playgroud)
有了这个:
stockDailyRecords.setStock(stock);
stock.getStockDailyRecords().add(stockDailyRecords);
session.save(stock);
session.getTransaction().commit();
Run Code Online (Sandbox Code Playgroud)
不能像@OneToManyJPA 那样工作,它期望JPA级联– javax.persistence.CascadeType。但是,当使用Hibernate会话保存它时,org.hibernate.engine.Cascade将进行以下检查:
if ( style.doCascade( action ) ) {
Run Code Online (Sandbox Code Playgroud)
和Hibernate保存过程将导致ACTION_SAVE_UPDATE操作,但是JPA将传递ACTION_PERSIST和ACTION_MERGE,它将不匹配并导致级联无法执行。
| 归档时间: |
|
| 查看次数: |
19984 次 |
| 最近记录: |