Spring、Morphia 和 DataAccessException 实现

Posted

技术标签:

【中文标题】Spring、Morphia 和 DataAccessException 实现【英文标题】:Spring, Morphia and DataAccessException implementation 【发布时间】:2011-05-10 09:31:48 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

最简单的方法是编写一个实现PersistenceExceptionTranslator 的类,该类知道如何将Morphia/Mongo 异常转换为DataAccessException。将此类声明为 bean,如果您的 DAO 类带有 @Repository 注释,Spring 会自动要求它翻译异常。

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

【讨论】:

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

以上是关于Spring、Morphia 和 DataAccessException 实现的主要内容,如果未能解决你的问题,请参考以下文章

Morphia vs Spring Data Mongo

Spring Data MongoDB 五:进阶文档查询(分页Morphia)

初识Spring

Morphia - mongodb之ORM框架

Ninjaframework、Morphia 和 GeoSpatial 索引

Playframework + Morphia + MongoDb + ElasticSearch = Disater?