我有一个REST端点来存储产品。 每个产品都有名称,价格和图像(例如PNG文件),因此我将产品信息(产品名称和价格)和图像文件发送到我的REST端点。 图像存储在外部对象存储(例如Amazon S3)中,因此我存储图像并获取我添加到产品实体的URL,然后将其保存到我的数据库中。
我的问题:是负责这两项任务的存储库(存储在外部对象存储中,将产品保存到数据库中)? 所以我会有类似的事情:
productRepository.save(productInfo, productImageInputstream) {
String URL = externalObjectStorage.store(productImageInputstream);
Product product = new Product(productInfo, URL)
return productRepository.save(product);
}
这是一个好的设计吗?
由于
答案 0 :(得分:0)
如果图片对您的业务很重要,那么将问题分开是不可避免的。尽管如此,我仍然强烈建议将这两个问题分开,并更多地考虑它们之间的实际界面。
如果将两个问题分离,你可以:
如果您需要确保每件商品都有照片,请为其创建商业服务,然后使用您的CRUD存储库将数据/照片存储到各自的后端解决方案中:
interface ProductService {
Product createProductWithImage(productData, imageData);
}