当前位置: 首页 > 知识库问答 >
问题:

Hibernate 4+Spring 3.2+事务:一个服务、几个Dao、一个方法

何正德
2023-03-14
    @Transactional
    public void save(Sample sample){

        sampleDao.save(sample);
    }
    @Transactional
    public void delete(Sample sample){

        sampleDao.delete(sample);
    }

// A solution could be that , but not very clean...there should be an another way, no?

        @Transactional
        public void action(Sample sample){

        sampleDao.save(sample);

        sampleDao.delete(sample);
    }
    SampleServiceImpl:

    @Transactional
    public void save(Sample sample){

        sampleDao.save(sample);
    }

        ParcicipantServiceImpl
        @Transactional 
        public void save(Participant participant){

         participantDao.save(participant);
    }

// A solution could be that , but not very clean...there should be an another way, no?
        GlobalServiceImpl

        @Transactional 
        public void save(Participant participant,Sample sample){

         participantDao.save(participant);
                 sampleDao.save(sample);
    }

共有1个答案

乐正德华
2023-03-14

>

  • 您的解决方案很好,如果您想使用嵌套事务性方法,这可能是可行的(注意,我几天前看到了这个解决方案,但没有对其进行测试):

        
        @Transactional
        public void action(Sample sample){
            save(sample);
            delete(sample);
        }
    
    1. 事务应传播。
    @Transactional 
    public void save(Participant participant,Sample sample){
         participantDao.save(participant);
         sampleServiceImpl.save(sample); 
    }
    

  •  类似资料:
    • 问题内容: 为了了解Spring事务的工作原理,我想知道在以下情况下发生的情况:如果一种方法标记为,而另一种方法标记为。 假设配置使用所有默认设置。 现在,如果我要输入,显然可以开始交易。然后,钻进去会发生什么?交易已经存在的事实会导致没有新的交易诞生,还是我在这里创建两个交易? 关于Propagation的文档(在下面引用)似乎涵盖了这一点,但是我想验证一下我的理解 Propagation:通常

    • 我正在计划一个设计,我将从同一个池中获得两个连接(plocal)。仅在一个连接上启动事务,而不在另一个连接上启动事务。我希望在同一过程中使用这两个数据库连接,并使用非事务连接进行模式调用,使用事务连接进行支持事务的记录级调用。这种方法有效吗?

    • 本文向大家介绍Spring如何在一个事务中开启另一个事务,包括了Spring如何在一个事务中开启另一个事务的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Spring如何在一个事务中开启另一个事务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 spring使用@Transactional开启事务,而且该注解使用propagation属

    • 我需要创建一个具有架构列表的@Scheduled方法,对于每个架构,从2个表中删除行。 我将deleteFromCustomerTables定义为@Transactional(propagation=propagation.REQUIRES_NEW),并在其中使用EntityManager从2个表中删除行。 为了使其工作,我需要将@Transactional添加到计划FixedDelayTask,

    • 问题内容: 这有道理吗? 假设我需要从数据库中获取一个与另一个对象有关系的对象(由数据库中的外键以及域对象中的组合表示)。如果在我的第一个DAO中,我获取对象1的数据,则调用对象2的dao,最后(从第一个DAO中,调用对象1中的setter,并为其提供先前获取的对象2)。 我知道我可以代替加入连接,但是对我来说,断开功能耦合似乎更合乎逻辑(这就是为什么我对从另一个调用一个dao持怀疑态度)。还是应

    • A web server 一个 Web 服务器 Let’s finish with a complete Go program, a web server. This one is actually a kind of web re-server. Google provides a service at http://chart.apis.google.com that does automat