spring事务管理和hibernate事务管理的区别

spring事务管理和hibernate事务管理的区别,spring,spring-transactions,Spring,Spring Transactions,spring中的事务管理与spring中的事务管理有什么区别 冬眠??我参考了许多网站,但仍然无法理解可以使用Spring和Hibernate实现事务管理,但使用Spring可以通过内部处理回滚/提交来删除大量重复代码 冬眠 试一试{ trans=session.beginTransaction() session.save(txn) trans.commit() }捕获(例外e) { trans.rollback() } 在Spring中,您只需使用声明性((@Transactional an

spring中的事务管理与spring中的事务管理有什么区别


冬眠??我参考了许多网站,但仍然无法理解

可以使用Spring和Hibernate实现事务管理,但使用Spring可以通过内部处理回滚/提交来删除大量重复代码

冬眠

试一试{

trans=session.beginTransaction()

session.save(txn)

trans.commit()

}捕获(例外e)

{

trans.rollback()

}

在Spring中,您只需使用声明性((@Transactional annotations on your service methods)方法来处理保存和提交部分,而无需编写类似这样的语句 transaction.commit(); 事务。回滚();

@交易的

public void addCustomer(Customer c) { 

    this.customerDAO.addCustomer(c);

}
这可能需要在复杂映射的情况下进行大量条件检查,并在依赖表中保存/回滚事务。 Spring删除了对代码的所有手动处理,通过使用代理,它仅在所有事务都成功执行时保存事务,否则将回滚整个事务,从而实现事务的ACID属性


此外,hibernate负责对数据库执行查询,Spring事务管理负责事务的原子性质,因此您可以更专注于逻辑,而不是自己处理事务管理。

在Spring中,您可以使用JTA事务管理器(您确实不应该这样做),如果您使用org.springframework.orm.jpa.JpaTransactionManager,它将根据@transaction注释简单地使用AOP向DAOs添加transaction.begin()和transaction.commit()或transaction.rollBack()类型代码。所有工作实际上都是由数据库完成的。可能重复
public void addCustomer(Customer c) { 

    this.customerDAO.addCustomer(c);

}