Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将多个dao注入到一个服务中_Java_Hibernate_Spring - Fatal编程技术网

Java 将多个dao注入到一个服务中

Java 将多个dao注入到一个服务中,java,hibernate,spring,Java,Hibernate,Spring,如果我有几个DAO要注入到一个需要在单个事务中协同工作的服务中,我该怎么做 @Component public class CallerClass{ @Autowired private TransactionClass1 class1; @Autowired private TransactionClass2 class2; public void saveOperation(){ try{ class1.save(); cla

如果我有几个DAO要注入到一个需要在单个事务中协同工作的服务中,我该怎么做

@Component
public class CallerClass{
@Autowired    
private TransactionClass1 class1;
@Autowired    
private TransactionClass2 class2;

public void saveOperation(){    
    try{
        class1.save();
        class2.save();
    }catch(Exception ex){
    }
}
}

就像上面简单的代码一样。但是,该代码是缺少的

您是否使用JTA?您是否自己实现事务?请提供有关您的体系结构的更多信息,以便我们做出相应的响应

编辑: 请查看此项,例如:
您使用JTA吗?您是否自己实现事务?请提供有关您的体系结构的更多信息,以便我们做出相应的响应

编辑: 请查看此项,例如:

您必须在使用第一个dao之前打开事务(例如使用
@Transactional


必须在使用第一个dao之前打开事务(例如使用
@Transactional


您只需以与通常相同的方式注入所有DAO,即使用@inject或@Autowired的setter或构造函数

然后将服务方法注释为事务性的,并在多个DAO上调用所需的操作。事务将包含其中的所有dao调用

@Transactional
public void doStuff() {
  dao1.doStuff();
  dao2.doStuff();
}

您只需以与通常相同的方式注入所有DAO,即使用@inject或@Autowired的setter或构造函数

然后将服务方法注释为事务性的,并在多个DAO上调用所需的操作。事务将包含其中的所有dao调用

@Transactional
public void doStuff() {
  dao1.doStuff();
  dao2.doStuff();
}

好的,doStuff()方法的类应该用@Component注释,对吗?是的,如果您使用自动连接来连接组件。我想我以为你是。您可能也在使用较新的@Configuration/@Bean或纯XMl。好吧,doStuff()方法的类应该用@Component注释,对吗?如果您使用自动连接来连接组件,可以。我想我以为你是。您也可能正在使用较新的@Configuration/@Bean或纯XMl。