【问题标题】:Difference between spring transaction management and hibernate transaction managementspring事务管理和hibernate事务管理的区别
【发布时间】:2016-12-02 12:08:18
【问题描述】:

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

休眠??参考了很多网站,还是看不懂

【问题讨论】:

  • 在春天你可以使用 JTA 事务管理器(你真的不应该这样做),如果你使用 org.springframework.orm.jpa.JpaTransactionManager 将简单地使用 AOP 添加 transaction.begin () 和 transaction.commit() 或 transaction.rollBack() 类型代码给你的 DAO,基于 @Transaction 注释。所有的工作实际上都是由数据库完成的。

标签: spring spring-transactions


【解决方案1】:

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

在休眠中

试试{

 sessionFactory = HibernateUtil.getSessionFactory();

    session = sessionFactory.getCurrentSession();

trans= session.beginTransaction();

session.save(txn);

trans.commit();

}catch(异常 e)

{

trans.rollback();

}

在 Spring 中,您可以只使用声明式((服务方法上的@Transactional 注释)方法来处理保存和提交部分,而无需编写类似的语句 transaction.commit(); transaction.rollback();

@Transactional

public void addCustomer(Customer c) { 

    this.customerDAO.addCustomer(c);

}

这可能需要在复杂映射的情况下检查大量条件并保存/回滚相关表中的事务。 Spring消除了所有手动处理代码,并通过使用代理,只有在所有事务执行成功后才保存事务,否则回滚整个事务,从而实现事务的ACID属性。

此外,hibernate 会执行对数据库的查询,而 Spring 事务管理负责事务的原子性质,因此您可以将更多精力放在逻辑上,而不是自己处理事务管理。

【讨论】:

    猜你喜欢
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 2012-05-06
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    相关资源
    最近更新 更多