我是Spring开发的新手,目前正在寻找基于传递给休息服务的JSON数据创建对象的最佳实践,然后使用JPA进行存储。
举个例子,让我们假设一个简化的文件上传服务,客户可以将以下JSON对象发布到:
{"filename":"myfile.pdf", "data":someByteArray, "extension":"pdf"}
在服务器上,我不想将文件的原始数据存储在数据库中,而是将其上传到某个云存储,只是存储一个链接。所以一旦"数据"存储参数内容并接收链接,它已过时。
我提出的选项是:
a)定义一个' union'用于反序列化包含所有字段的请求主体的类("文件名","链接","扩展" AND"数据"),标记& #39;中间'数据为@Transient,因此不会存储在数据库中,
b)定义两个类:一个用于反序列化请求体("文件名","数据","扩展")然后用于构建要存储的所需实体类("文件名","链接","扩展名")
c)定义一个自定义的JsonDeserializer,它解析请求体并构造实体类(" filename"," link"," extension")。
虽然所有方法都可能有效,但在更复杂的情况下,选项a)会使实体的类与只需要反序列化一次的成员混淆,而选项b)和c)可能导致很多额外的课程。
这有什么最好的做法吗?顺便说一句,感谢您阅读这篇文章:)