对于最新的稳定版本,请使用 Spring Data Couchbase 5.4.0! |
集合支持
Couchbase 支持 Scopes 和 Collections。本节记录了如何将其与 Spring Data Couchbase 一起使用。
try-cb-spring示例应用程序是在 Spring Data Couchbase 中使用范围和集合的工作示例。
2021 Couchbase Connect 关于 Spring Data 中集合的演示文稿可以在 Presentation Only 和 Presentation with Slide Deck 中找到
入门和配置
范围和集合规范
有几种指定范围和集合的机制,这些机制可以组合使用,或者一种机制可以覆盖另一种机制。 首先,范围和集合的一些定义。未指定的范围表示将使用默认范围,同样,一个 unspecified collection 表示使用默认集合。 只有三种有效的范围和集合组合。(1) 默认范围和默认集合;(2) 默认 scope 和非默认集合;(3) 非默认范围和非默认集合。不能具有非默认 scope 和 default 集合作为非 default 作用域不包含 default 集合,也不能创建一个集合。
可以在配置中指定范围:
@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.;
}
}
范围和集合可以指定为实体类和存储库上的注释:
@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 在模板上指定范围和集合:
List<Airport> airports = template.findByQuery(Airport.class).inScope("archived").all()
可以使用 withScope(scopeName) 和 withCollection(collectionName) API 在扩展 DynamicProxyable 的存储库上指定范围和集合:
public interface AirportRepository extends CouchbaseRepository<Airport, String>, DynamicProxyable<AirportRepository>{...}
...
List<Airport> airports = airportRepository.withScope("archived").findByName(iata);
-
模板 Fluent API 的 inScope()/inCollection()
-
template/repository 对象的 withScope()/withCollection()
-
repository 方法的注释
-
存储库接口的注释
-
实体对象的注释
-
getScope() 的配置中