当前位置: 首页 > 面试题库 >

使用Springs Transaction Management与使用Hibernate的好处

薛文斌
2023-03-14
问题内容

我一直在尝试学习Spring和Hibernate,并且我在网络上使用了很多示例来组合一个不错的应用程序。但是,我现在意识到Spring支持事务管理。在我的spring应用程序中,我只是简单地拨打了我想直接拨打的电话即可进入hibernate状态。人们为什么会使用Spring的事务管理/数据库资料,是否有原因/好处?


问题答案:

真正的优点是:

  • 轻量级声明性语法。相比:
        public void saveEmployee(Employee e) {
        Session s = sf.getCurrentSession();    
        s.getTransaction().begin();
        s.save(e);    
        s.getTransaction().commit();
    }

        @Transactional
    public void saveEmployee(Employee e) {
        sf.getCurrentSession().save(e);
    }
  • 灵活的交易传播。想象一下,现在您需要在saveEmployee()复杂事务中执行此方法。对于手动事务管理,由于事务管理是硬编码的,因此您需要更改方法。使用Spring,事务传播可以顺利进行:
       @Transactional
    public void hireEmployee(Employee e) {
        dao.saveEmployee(e);
        doOtherStuffInTheSameTransaction(e);
    }
  • 发生异常时自动回滚


 类似资料:
  • 正面:JSP+JSTL+jQuery[我有很好的命令]+我已经创建了我自己的定制组件,以便重用和完全控制我的组件。 后端:使用Hibernate[ORM]框架[由于跨数据库],我也有很好的知识。 我很高兴上面和感觉有信心建立产品,很快。但是

  • 我正试图开发一个web应用程序,我想知道是否有一种方法可以在不编写大量代码的情况下利用外键。 我的培训。java status_trainee.java 错误:由:org.hibernate.annotationexception:uaicontacts.model.trainees.status_traineeid上的@onetoone或@manytoone引用了未知实体:String引起 谢谢

  • 问题内容: 当尝试使用我创建类型查询时,出现以下别名问题。 我应该对以下代码进行哪些更改以获取计数? 限制条件: 我必须使用CriteriaBuilder / Query,因为必须根据值动态构建where子句。 我只需要COUNT,而不需要内存中的对象列表。 代码示例片段: 日志:我希望在所有where子句属性中使用generateAlias0而不是generateAlias1。 问题答案: 您的

  • 本文向大家介绍使用Dubbo的好处?相关面试题,主要包含被问及使用Dubbo的好处?时的应答技巧和注意事项,需要的朋友参考一下 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平

  • 问题内容: 我在尝试将Hibernate事务中所做的更改推送到数据库以使DbUnit在我的测试用例中正常工作时遇到问题。似乎DbUnit没有看到Hibernate所做的更改,因为它们尚未在事务结束时提交。 这是我过度简化的测试用例,用于演示我的问题:- 我使用DbUnit的整个想法是: 将数据保存到多个表的调用。 使用DbUnit从XML获取期望的表。 使用DbUnit从数据库获取实际表。 做。

  • 问题内容: 当在使用Doctrine类时需要自定义查询时,有人可以为我提供一些明确的理由(支持事实)来使用/学习DQL与SQL吗? 我发现,如果无法使用ORM的内置关系功能来实现某些目标,通常会在扩展的Doctrine或DoctrineTable类中编写自定义方法。在这种方法中,用直接的SQL编写所需的代码(使用带有适当准备好的语句/注入保护等的PDO)。DQL似乎是学习/调试/维护的另一种语言,