栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在将请求添加到MongoDB之前如何处理Spring Data中的插入请求?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在将请求添加到MongoDB之前如何处理Spring Data中的插入请求?

感觉最好还是编写一个自定义控制器,而不是在这里使用Spring Data
REST,因为您基本上需要两种资源:一种用于添加链接或返回现有资源,另一种用于通过哈希来检索原始URI。

在第一种方法中,您只需要调用存储库方法

findByLongURL(…)
并使用获得的
URL
实例(如果您有结果),或采取第二步来实际创建哈希并保存
URL
实例思想存储库。第二个资源基本上只是调用您已经存在的方法。

这很简单,也很容易消化。

如果您需要将前一种方法的实现作为原子操作,则需要手动实现存储库查询方法(有关阅读参考文档中相关部分的一般说明):

class UrlRepositoryImpl implements UrlRepositoryCustom {  private final MongoOperations operations;  public UrlRepositoryImpl(MongoOperations operations) {    this.operations = operations;  }  @Override  public URL findOrInsert(String source) {    // What to find?    Query query = Query.query(Criteria.where("longURL").is(source);    // What to write if nothing can be found    Update update = new Update()      .setonInsert("longURL", source)      .setonInsert("hash", calculatedHash);    FindAndModifyOptions options = new FindAndModifyOptions.options()      .returnNew(true) // returns the document insert (if so)      .upsert(true); // insert document if it doesn't exist    return operations.findAndModify(query, update, options, URL.class);  }}

如您所见,这涉及处理一些较低级别的细节(尽管可以通过使用静态导入来减少冗长程度),但基本上可以为您提供原子操作。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/385273.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号