8

目前我们有一个与 spring 和 JPA 一起工作的企业应用程序。今天我们正在计划我们的下一代服务器。

我们正在争论是否在我们的项目中使用spring-data?它似乎提高了生产力和开发时间。

spring-data 有什么替代方案可以考虑吗?为什么不单独使用 spring 和 JPA?你有什么建议?

请记住,我们是从头开始开发的,因此除了以下限制之外没有其他限制:

  1. 我们使用 mysql 和 mongoDB
  2. 我们用java编码
  3. 我们将在 GWT 中开发客户端代码。

目前我们有一个分层的架构。我们有一个服务层和一个管理者层,它们负责持久化和业务逻辑。构建它的人没有看到插入第三个 DAO 层的充分理由。

4

1 回答 1

3

Spring Data 比 Spring + JPA 有一些技术优势,在纯 SQL 环境中,我认为给 Spring Data 一个优势:

  • Spring Data 对所有实现使用相同的 CrudRepository 接口,因此您在 JPA 和 MongoDB 之间切换的工作量更少
  • Spring Data 可以让您一次又一次地编写相同的方法。您只需将方法添加到接口,它就会为您生成它(例如 UserRepository.findByUsername())
  • 您可以保存 JPA、MongoDB 和其他的 REST 实现的样板文件(请参阅http://projects.spring.io/spring-data-rest/
  • 如果您想尝试其他持久性或索引服务,那么 Spring Data 实现了成熟和更新的技术,例如 Neo4j、Hadoop、Solr、ElasticSearch、fuzzydb。

鉴于您使用 MySQL 和 MongoDB,我认为 Spring Data 是一个强有力的候选者,因为它允许开发人员编写一个数据访问 API(Spring Data)而不是两个(JPA 和 MongoDB Java 客户端)。

关于现有架构,听起来好像您的管理层正在实现富域模式或 Active Record。

在我看来,当结合使用 Spring 的 @Configurable 注入服务时,Spring Data 非常适合富域。

最后,我想说,当需要为 Spring Security 和 Spring Social 等使用 MongoDB 或其他而不是 SQL 的事物实现服务时,Spring Data 也提供了显着优势。

我们在可以在此处找到的模糊数据库示例 webapp 中执行此操作。(免责声明:我是目前fuzzydb 上唯一的最新提交者,并且已经有很多年没有接触过它了,但是我们确实有一个基于该代码的实时服务www.fridgemountain.com,但忽略了推广它)

于 2013-10-11T09:28:41.880 回答