Spring数据替代品

时间:2013-10-10 14:16:39

标签: spring dao spring-data spring-data-jpa

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

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

有没有其他选择考虑弹簧数据?为什么不单独使用spring和JPA? 你有什么建议?

请记住,我们已经开始从头开始开发,因此除了以外没有任何限制:

  1. 我们使用mysql和mongoDB
  2. 我们在java中编码
  3. 我们将在GWT中开发客户端代码。
  4. 目前我们有分层架构。 我们有一个服务层和一个管理层,它负责持久化和业务逻辑。无论谁建造,都没有理由插入第三个DAO层。

1 个答案:

答案 0 :(得分: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 Client)。

关于现有架构,听起来好像您的经理层正在实施Rich Domain模式或Active Record。

Spring数据在我看来非常适合使用Rich Domain与使用Spring的@Configurable注入服务相结合。

最后,我要说Spring Data在需要为Spring Security和Spring Social实现服务时也提供了显着的优势,这些服务使用MongoDB或其他语言代替SQL。

我们在fuzzydb示例webapp中找到了here。 (免责声明:我目前是fuzzydb最近唯一的提交者,并且多年没有触及它,但我们确实有一个现场服务,www.fridgemountain.com,基于该代码,但忽略了推广它)