= Spring Data Couchbase image:https://jenkins.spring.io/buildStatus/icon?job=spring-data-couchbase%2Fmain&subject=Build[link=https://jenkins.spring.io/view/SpringData/job/spring-data-couchbase/] https://gitter.im/spring-projects/spring-data[image:https://badges.gitter.im/spring-projects/spring-data.svg[Gitter]] image:https://img.shields.io/badge/Revved%20up%20by-Develocity-06A0CE?logo=Gradle&labelColor=02303A["Revved up by Develocity", link="https://ge.spring.io/scans?search.rootProjectNames=Spring Data Couchbase"]
https://www.springsource.org/spring-data[Spring Data]项目的主要目标是让构建使用新的数据访问技术(如非关系型数据库、MapReduce框架和基于云的数据服务)的Spring应用程序变得更加容易。
Spring Data Couchbase项目旨在为Couchbase Server作为文档数据库和缓存提供一个熟悉且一致的基于Spring的编程模型,同时保留特定存储的特性和功能。Spring Data Couchbase的主要功能领域包括以POJO为中心的模型,用于与Couchbase Server Bucket交互,以及轻松编写repository风格的数据访问层。
集成测试需要一个Couchbase服务器,其中有一个名为"protected"的bucket,密码设置为"password"。如果服务器允许用户,还应设置一个用户名为"protected"、密码为"password"的用户。运行测试的推荐方式是安装Docker并使用server.properties中的容器。
该项目由Couchbase, Inc.领导和维护。
== 特性
- 使用基于Java的
@Configuration
类或XML命名空间支持Couchbase驱动程序(Java SDK版本2.x)的Spring配置。 CouchbaseTemplate
辅助类提高了执行常见Couchbase操作的生产力。包括文档和POJO之间的集成对象映射。- 将异常转换为Spring的可移植数据访问异常层次结构。
- 功能丰富的对象映射,与Spring的转换服务集成。
- 基于注解的映射元数据,但可扩展以支持其他元数据格式。
- 自动实现
Repository
接口,包括支持自定义查找方法(由Couchbase的查询语言N1QL
支持)和PagingAndSortingRepository
。 - 对于Couchbase服务器版本<4.0,存储库仍可由Couchbase Views支持。
- 支持地理空间和多维查询(由Couchbase空间视图支持)
- JMX管理和监控
- 可作为
@Cacheable
支持的后端,缓存任何需要高性能访问的对象(参见Couchbase GitHub中的兄弟Spring Cache项目,https://github.com/couchbaselabs/couchbase-spring-cache[couchbaselabs/couchbase-spring-cache])。
== 版本兼容性
Spring-Data Couchbase
是Couchbase Java SDK 2.x
一代的Spring Data连接器。
SDK和这个Spring Data社区项目都是主要版本变更,与各自的前一版本有很多不同。
值得注意的是,此版本兼容Couchbase Server 4.0
,支持N1QL
查询语言。
== 行为准则
== 入门
这里是一个使用Spring Data Repositories的Java应用程序的快速示例:
[source,java]
public interface PersonRepository extends CrudRepository<Person, Long> {
List
List
@Service public class MyService {
private final PersonRepository repository;
public MyService(PersonRepository repository) { this.repository = repository; }
public void doWork() {
repository.deleteAll();
Person person = new Person();
person.setFirstname("Couch");
person.setLastname("Base");
repository.save(person);
List<Person> lastNameResults = repository.findByLastname("Base");
List<Person> firstNameResults = repository.findByFirstnameLike("Cou*");
} }
@Configuration @EnableCouchbaseRepositories public class Config extends AbstractCouchbaseConfiguration {
@Override
protected List<String> getBootstrapHosts() {
return Arrays.asList("host1", "host2");
}
@Override
protected String getBucketName() {
return "default";
}
@Override
protected String getPassword() {
return "";
}
}
=== Maven配置
添加Maven依赖:
[source,xml]
如果你更喜欢即将发布的主要版本的最新快照,请使用我们的Maven快照仓库并声明适当的依赖版本。
[source,xml]
== 获取帮助
使用Spring Data遇到问题?我们很乐意帮忙!
- 查看https://docs.spring.io/spring-data/couchbase/docs/current/reference/html/[参考文档]和https://docs.spring.io/spring-data/couchbase/docs/current/api/[Javadocs]。
- 学习Spring基础知识 – Spring Data建立在Spring Framework之上,请查看https://spring.io[spring.io]网站获取丰富的参考文档。如果你刚开始使用Spring,可以尝试https://spring.io/guides[指南]之一。
- 提问 - 我们监控https://stackoverflow.com[stackoverflow.com]上标记为https://stackoverflow.com/tags/spring-data[`spring-data-couchbase`]的问题。你也可以在https://gitter.im/spring-projects/spring-data[Gitter]上与社区交流。
- 在https://jira.spring.io/browse/DATACOUCH[jira.spring.io/browse/DATACOUCH]报告Spring Data Couchbase的bug。
== 报告问题
Spring Data使用GitHub作为问题跟踪系统来记录bug和功能请求。如果你想提出一个问题,请遵循以下建议:
- 在记录bug之前,请搜索https://github.com/spring-projects/spring-data-couchbase/issues[问题跟踪器],看看是否有人已经报告了该问题。
- 如果该问题尚不存在,请https://github.com/spring-projects/spring-data-couchbase/issues/new[创建一个新问题]。
- 请在问题报告中提供尽可能多的信息,我们希望知道你使用的Spring Data版本和JVM版本。
- 如果需要粘贴代码或包含堆栈跟踪,请在文本前后使用Markdown +++```+++ 转义。
- 如果可能,请尝试创建一个重现该问题的测试用例或项目。附上你的代码链接或包含代码的压缩文件。
== 从源代码构建
你不需要从源代码构建来使用Spring Data(二进制文件在https://repo.spring.io[repo.spring.io]中),但如果你想尝试最新和最棒的功能,可以使用https://github.com/takari/maven-wrapper[maven wrapper]轻松构建Spring Data。你还需要JDK 17或更高版本。
[source,bash]
$ ./mvnw clean install
如果你想使用常规的mvn
命令构建,你需要https://maven.apache.org/run-maven/index.html[Maven v3.5.0或更高版本]。
如果你希望提交pull请求,另请参阅link:CONTRIBUTING.adoc[CONTRIBUTING.adoc],特别是在进行第一个非微小更改之前,请签署https://cla.pivotal.io/sign/spring[贡献者协议]。
=== 构建参考文档
构建文档也会构建项目,但不运行测试。
[source,bash]
$ ./mvnw clean install -Pantora
生成的文档可在target/antora/site/index.html
中找到。
=== 构建并暂存参考文档以供审阅
[source,bash]
export MY_GIT_USER=pwd
/target/site/reference/html
pushd /tmp
mkdir $$
cd $$
参见 https://docs.github.com/en/pages/getting-started-with-github-pages/creating-a-github-pages-site
此示例使用名为"staged"的仓库
git clone git@github.com:${MY_GIT_USER}/staged.git -b gh-pages cd staged cp -R $docs/* . git add . git commit --message "stage for review" git push origin gh-pages popd
生成的文档可在target/site/reference/html/index.html
中找到。
== 示例
- https://github.com/spring-projects/spring-data-examples/[Spring Data Examples]包含解释特定功能的示例项目。
== 许可证
Spring Data Couchbase是根据https://www.apache.org/licenses/LICENSE-2.0.html[Apache 2.0许可证]发布的开源软件。