此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Data Couchbase 5.5.2spring-doc.cadn.net.cn

馆藏支持

Couchbase 支持范围和集合。本节记录了如何将其与 Spring Data Couchbase 一起使用。spring-doc.cadn.net.cn

try-cb-spring 示例应用程序是在 Spring Data Couchbase 中使用 Scopes 和 Collections 的工作示例。spring-doc.cadn.net.cn

2021 年 Couchbase Connect 关于 Spring Data 中的集合的演示文稿可以在 Presentation OnlyPresentation with Slide Deck 中找到spring-doc.cadn.net.cn

要求

入门和配置

范围和集合规范

有几种指定作用域和集合的机制,它们可以组合在一起,或者一种机制可以覆盖另一种机制。首先是作用域和集合的一些定义。未指定的作用域表示要使用默认作用域,同样,一个未指定的集合表示要使用默认集合。只有三种作用域和集合组合是有效的。(1) 默认作用域和默认集合;(2) 默认作用域和非默认集合;(3) 非默认作用域和非默认集合。不可能有非默认作用域和默认集合,因为非默认作用域不包含默认集合,也不能创建默认集合。spring-doc.cadn.net.cn

可以在配置中指定范围:spring-doc.cadn.net.cn

@Configuration
static class Config extends AbstractCouchbaseConfiguration {

    // Usual Setup
    @Override public String getConnectionString() { /* ... */ }

    // optionally specify the scope in the Configuration
    @Override
    protected String getScopeName() {
        return "myScope"; // or a variable etc.;
    }

}

范围和集合可以指定为实体类和存储库上的注释:spring-doc.cadn.net.cn

@Document
@Scope("travel")
@Collection("airport")
public class Airport {...
@Scope("travel")
@Collection("airport")
public interface AirportRepository extends CouchbaseRepository<Airport, String> ...

可以使用 inScope(scopeName) 和 inCollection(collectionName) fluent API 在模板上指定范围和集合:spring-doc.cadn.net.cn

List<Airport> airports = template.findByQuery(Airport.class).inScope("archived").all()

可以使用 withScope(scopeName) 和 withCollection(collectionName) API 在扩展 DynamicProxyable 的存储库上指定范围和集合:spring-doc.cadn.net.cn

public interface AirportRepository extends CouchbaseRepository<Airport, String>, DynamicProxyable<AirportRepository>{...}
...
List<Airport> airports = airportRepository.withScope("archived").findByName(iata);
优先级为:
  1. 模板 fluent api 的 inScope()/inCollection()spring-doc.cadn.net.cn

  2. 模板/存储库对象的 withScope()/withCollection()spring-doc.cadn.net.cn

  3. 存储库方法的注释spring-doc.cadn.net.cn

  4. 仓库接口的注释spring-doc.cadn.net.cn

  5. 实体对象的注释spring-doc.cadn.net.cn

  6. getScope() 的配置spring-doc.cadn.net.cn