spring-data-mongo 将json转成了实体,实体又被responsebody转成了json?

发布于 2022-09-11 18:23:23 字数 205 浏览 14 评论 0

前后台分离开发,使用的mongodb数据,在开发过程中,让我感觉很不可思议的事情就是。
spring-data-mongo 将 mongodb的查询数据转换成了 实体类,实体类又被 responsebody转换成了
JSON字符串,这真是够折腾的。

直接把Mongodb的结果发送给前台不好嘛?
为什么非要进行着两次不必要的转换?
有木有人跟我相同想法?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦亿 2022-09-18 18:23:23

1,不想面向对象的话,可以面向数据
2,spring data rest 你需要了解下
3,你的这些没有业务的纯粹数据交换,spring boot 不一定适合,有更小巧、简介的替代品例如,nodejs、php
4,你思考过你的怀疑方向么?

爱冒险 2022-09-18 18:23:23

在数据表达上面,MongoDB虽然使用的是JSON,但是由于JSON的一些先天不足(如类型欠缺),数据库没有办法在底层使用它,所以MongoDB中存储的实际是BSON,这是一种有利于存储和传输但是人不可读的二进制格式,从MongoDB得到的结果实际上是BSON。无论是BSON还是JSON,都不是Java原生支持的类型,所以它们在Java中都有对应的封装类。BSON对应的是BsonDocument,JSON类型并没有在驱动程序中体现,因为驱动给出的是Document类型,这个稍后再讲。
从整体流程上看,驱动在发出请求之后得到的是一个BSON文档,可以理解为一堆二进制数据,这是没法直接用的,所以通过反序列化变成BsonDocument,这个类型就有一些有意思的API了,比如toJson。理论上从这里就可以直接变成JSON返回回去了,但是实际使用中,我们只有很少的情况是需要JSON字符串作为结果的,更多的情况下,我们是需要把文档中的值取出来用。为了这个目的,所有的查询方法返回的都是Document,它相当于一个字典或者哈希表,通常这就是我们使用的基础类型,同样它也是支持toJson方法的。
下面才说到Spring Data,它比驱动位于更上层,实际上是调用驱动然后在这个基础上实现了更多上层功能,比如映射成POJO就是其中之一,剩下的诸如各种CRUD方法。如前面所说,站在前端的角度可能JSON对你是最有用的,大部分时候我们需要的并不是把一个对象变成JSON,而是要根据业务逻辑方便地查询和修改其中的值。这也是Spring Data的意义所在。
如果你的唯一目的就是变成JSON,那么根本就用不上Spring Data,直接用驱动就好了,确实效率是更好的,并且驱动其实本身更接近Mongo一些,Spring Data为了在不同数据库之间形成共同的语义,做了一些自己的封装,有时候并不是十分容易理解。
说了这么多,不知道有没有加深你对Mongo驱动和Spring Data在定位上的理解,希望有所帮助。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文