设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 查看内容

Spring Data与MongoDB:不协调的设计

2013-11-15 09:53| 发布者: joejoe0332| 查看: 3580| 评论: 0|原作者: 张龙|来自: InfoQ

摘要:   MongoDB是一款非常知名的NoSQL文档数据库,而Spring则是Java领域著名的开源框架。除了构成Spring核心的IoC与AOP之外,Spring也有大量应用于各个不同领域的子框架,其中Spring Data就是专门针对数据处理的一个子 ...


  无法切换数据库


  很多时候,你希望将数据存储在单个MongoDB实例的不同数据库中,比如说要保持不同客户数据的分离。


  如果使用原生的Mongo驱动,那么切换数据库简直就是小菜一碟,直接调用getDb(dbName)就行了。但如果使用Spring Data MongoDb,那么这几乎是一件无法做到的事情,除非你愿意自己写大量的代码(不过这么做的话在新版框架发布后可能就会出现移植性问题)。


  让人奇怪的日志框架


  我已经就Spring的文档问题专门写过一篇文章。Spring文档说它使用的是Jakarta Commons Logging,不过Spring Data显然使用的是SLF4J。然而,Spring Data文档却压根儿就没有提过这事。


  这意味着如果开始使用Spring Data,那么你可能就会遇到很多文档中没有提及的运行期错误,这时没别的办法,上StackOverflow上找答案吧。


  不支持文档的动态特性


  使用MongoDB这样的面向文档的数据库最大的原因就在于其动态特性了。比如说同一集合中的文档可以不同,这样同一个集合中就可以有多个版本的文档,然后逐渐升级,文档也可以嵌套。键名不必事先知道,这样就可以直接向文档中插入属性映射。


  但事实却是Spring Data MongoDB丢弃了MongoDB的这个最基本的特性,并且试图在其上构建一个确定的、预先定义好的ORM风格的层,这直接造成框架与底层数据库之间的不匹配。


  结论


  Spring Data MongoDB似乎是由一些压根儿就没有在真正的项目中用过MongoDB的人设计出来的,它试图将面向文档的数据库硬塞到ORM风格的框架中。


  这导致了框架与数据库之间的不匹配,Spring Data MongoDB反而成为了一个负担而不是帮助我们简化开发。最后,你还是不得不在几乎所有真正的项目开发中使用原生的MongoDB Java驱动。


  后记


  各位InfoQ读者,你曾经使用过Spring Data MongoDB进行过MongoDB开发么,你对于Spring Data MongoDB的使用感受是如何呢?是否与Deva的经历一致呢?我曾经在项目中尝试过Spring Data MongoDB,使用下来的一个直观感受就是它将简单的事情搞复杂了。直接使用原生Java驱动来操纵MongoDB是个非常简单且直观的过程,而 Spring Data MongoDB却沿用了它一直以来的处理风格,那就是IoC,需要先进行注入,然后从容器中获取所需的对象,将原本很轻松的操作变得复杂起来,不知各位读 者有什么样的感受呢,欢迎讨论。


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部