Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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 Spring、Morphia和DataAccessException实现_Java_Spring_Mongodb_Data Access Layer - Fatal编程技术网

Java Spring、Morphia和DataAccessException实现

Java Spring、Morphia和DataAccessException实现,java,spring,mongodb,data-access-layer,Java,Spring,Mongodb,Data Access Layer,我正在Spring应用程序中使用Morphia和MongoDB。我在许多示例项目中看到,许多服务接口方法抛出DataAccessException。据我所知,这个异常是从各种框架类抛出的,以简化各种数据访问实现的异常处理 此时,我想我应该捕获Morphia抛出的任何错误,并从我的服务实现中抛出DataAccessException。所以我的问题是,我应该用使用Morphia的服务实现对这种方法进行建模吗?也许我只是误解了这一点 如果您希望您的业务逻辑能够对特定类型的DataAccessExcep

我正在Spring应用程序中使用Morphia和MongoDB。我在许多示例项目中看到,许多服务接口方法抛出DataAccessException。据我所知,这个异常是从各种框架类抛出的,以简化各种数据访问实现的异常处理


此时,我想我应该捕获Morphia抛出的任何错误,并从我的服务实现中抛出DataAccessException。所以我的问题是,我应该用使用Morphia的服务实现对这种方法进行建模吗?也许我只是误解了这一点

如果您希望您的业务逻辑能够对特定类型的
DataAccessException
做出反应,而不依赖于Morphia/Mongo类型,那么这是有意义的

最简单的方法是编写一个类,该类实现了
PersistenceExceptionTranslator
,并且知道如何将Morphia/Mongo异常转换为
DataAccessException
。将这个类声明为bean,如果DAO类用
@Repository
注释,Spring将自动要求它转换异常


然而,如果您的业务逻辑或异常处理逻辑并不真正关心抛出哪种异常类型,那么这似乎没有什么意义。

我认为这是有道理的。你是说我可以集中捕获Morphia/Mongo异常,并使用PersistenceExceptionTranslator将它们转换为更具体的DataAccessException类型,而不是在服务实现中处理它们吗?@Matt:没错。这是一个贯穿各领域的问题,您不想用它把代码弄得乱七八糟。