春季数据替代品
Posted
技术标签:
【中文标题】春季数据替代品【英文标题】:Spring data alternatives 【发布时间】:2013-10-18 08:41:37 【问题描述】:目前我们有一个与 spring 和 JPA 一起工作的企业应用程序。 今天我们正在规划我们的下一代服务器。
我们正在讨论是否在我们的项目中使用spring-data?它似乎可以提高生产力和开发时间。
除了 spring-data 之外还有其他选择吗?为什么不单独使用 spring 和 JPA? 你有什么建议?
请记住,我们是从头开始开发的,因此除了以下限制之外没有其他限制:
-
我们使用mysql和mongoDB
我们用java编写代码
我们将在 GWT 中开发客户端代码。
目前我们有一个分层架构。 我们有一个服务层和一个管理者层,它们负责持久化和业务逻辑。构建它的人没有看到插入第三个 DAO 层的充分理由。
【问题讨论】:
这不是您问题的真正答案,但我很想听听让您寻找替代品的方法是什么?通常人们将迁移到 Spring Data 以提高生产力,但您寻找替代方案似乎表明您看到了某些缺点。您介意用更多的细节更新这个问题吗? 【参考方案1】: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 也具有显着优势。
我们在可以找到here 的fuzzydb 示例web 应用程序中执行此操作。 (免责声明:我是目前fuzzydb 上唯一的最新提交者,并且已经很多年没有接触过它,但我们确实有一个基于该代码的实时服务www.fridgemountain.com,但忽略了推广它)
【讨论】:
以上是关于春季数据替代品的主要内容,如果未能解决你的问题,请参考以下文章