Spring认证中国教育管理中心-Apache Cassandra 的 Spring 数据

动态 0 594
IT胶囊
IT胶囊 LV1 2021年12月13日 17:03 发表
点击群号免费加入社区交流群:367346704
<h1 style="font-size: 1.056em; margin-bottom: 20px; font-weight: 700; border: 0px; line-height: 1.579; position: relative; font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; text-align: justify; margin-top: 0px !important;">介绍</h1><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">参考文档的这一部分解释了 Spring Data 为 Apache Cassandra 提供的核心功能。</span></p><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">Cassandra 支持介绍了 Cassandra 模块功能集。</span></p><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">反应式 Cassandra 支持解释了反应式 Cassandra 的细节。</span></p><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">Cassandra Repositories引入了对 Cassandra 的存储库支持。</span></p><h1 style="font-size: 1.056em; margin-top: 20px; margin-bottom: 20px; font-weight: 700; border: 0px; line-height: 1.579; position: relative; font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; text-align: justify;">8.1.Apache Cassandra 模块的 Spring CQL 和 Spring Data</h1><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">Spring Data for Apache Cassandra 允许在 CQL 和实体级别进行交互。</span></p><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">Spring Data 为 Apache Cassandra 抽象提供的值可能最好通过下表中列出的操作序列来展示。该表显示了 Spring 负责哪些操作以及哪些操作是您(应用程序开发人员)的责任。</span></p><div style="margin-top: 18px; margin-bottom: 18px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><img src="https://p6.toutiaoimg.com/origin/tos-cn-i-qvj2lq49k0/c8f80418cfd54e76a64a0f09c90e0dee?from=pc" img_width="808" img_height="434" alt="Spring认证中国教育管理中心-Apache Cassandra 的 Spring 数据" inline="0" style="border-width: 0px; border-style: initial; margin-right: auto; margin-bottom: 8px; margin-left: auto; cursor: zoom-in; max-width: 100%; display: block; border-radius: 4px; height: auto;"><p style="margin-top: 20px; border: 0px; margin-bottom: 0px !important;"></p></div><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">核心 CQL 支持负责处理所有低级细节,这些细节可以使 Cassandra 和 CQL 成为开发时如此乏味的 API。使用映射实体对象允许模式生成、对象映射和存储库支持。</span></p><h1 style="font-size: 1.056em; margin-top: 20px; margin-bottom: 20px; font-weight: 700; border: 0px; line-height: 1.579; position: relative; font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; text-align: justify;">8.1.1.为 Cassandra 数据库访问选择一种方法</h1><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">您可以从多种方法中进行选择,以用作 Cassandra 数据库访问的基础。Spring 对 Apache Cassandra 的支持有多种形式。一旦开始使用其中一种方法,您仍然可以混合搭配以包含来自不同方法的功能。以下方法效果很好:</span></p><ul style="margin: 20px 30px; border: 0px; counter-reset: ul_list 0; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><li style="list-style-type: none; border: 0px;"><span style="border: 0px; color: rgb(8, 109, 195); --tt-darkmode-color: #086DC3;">CqlTemplate</span>并且<span style="border: 0px; color: rgb(8, 109, 195); --tt-darkmode-color: #086DC3;">ReactiveCqlTemplate</span>是经典的 Spring CQL 方法,也是最受欢迎的方法。这是“最低级别”的方法。请注意这样的组件CassandraTemplate 使用CqlTemplate在引擎罩。</li><li style="list-style-type: none; border: 0px;"><span style="border: 0px; color: rgb(8, 109, 195); --tt-darkmode-color: #086DC3;">CassandraTemplate</span>包装了一个CqlTemplate提供查询结果到对象映射和使用SELECT,INSERT,UPDATE,和DELETE方法,而不是写CQL语句。这种方法提供了更好的文档和易用性。</li><li style="list-style-type: none; border: 0px;"><span style="border: 0px; color: rgb(8, 109, 195); --tt-darkmode-color: #086DC3;">ReactiveCassandraTemplate</span>包装了一个ReactiveCqlTemplate提供查询结果到对象映射和使用SELECT,INSERT,UPDATE,和DELETE方法,而不是写CQL语句。这种方法提供了更好的文档和易用性。</li><li style="list-style-type: none; border: 0px;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">Repository Abstraction 允许您在数据访问层中创建存储库声明。Spring Data 的存储库抽象的目标是显着减少为各种持久性存储实现数据访问层所需的样板代码量。</span></li></ul><h1 style="font-size: 1.056em; margin-top: 20px; margin-bottom: 20px; font-weight: 700; border: 0px; line-height: 1.579; position: relative; font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; text-align: justify;">9. 卡桑德拉支持</h1><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">Spring Data 对 Apache Cassandra 的支持包含广泛的特性:</span></p><ul style="margin: 20px 30px; border: 0px; counter-reset: ul_list 0; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><li style="list-style-type: none; border: 0px;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">Spring 配置支持基于 Java 的@Configuration类或 XML 命名空间。</span></li><li style="list-style-type: none; border: 0px;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">CqlTemplate通过正确处理常见的 Cassandra 数据访问操作来提高生产力的助手类。</span></li><li style="list-style-type: none; border: 0px;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">CassandraTemplate提供 CQL 表和 POJO 之间的对象映射的帮助器类。</span></li><li style="list-style-type: none; border: 0px;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">异常转换为 Spring 的可移植数据访问异常层次结构。</span></li><li style="list-style-type: none; border: 0px;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">与</span><span style="border: 0px;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">Spring 的</span></span><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">&nbsp;转换服务集成的功能丰富的对象映射。</span></li><li style="list-style-type: none; border: 0px;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">基于注释的映射元数据可扩展以支持其他元数据格式。</span></li><li style="list-style-type: none; border: 0px;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">基于 Java 的查询、条件和更新 DSL。</span></li><li style="list-style-type: none; border: 0px;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">Repository接口的自动实现,包括对自定义查找器方法的支持。</span></li></ul><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;"><span style="border: 0px;">对于大多数面向数据的任务,您可以使用CassandraTemplate或Repository支持,两者都使用丰富的对象映射功能。CqlTemplate通常用于增加计数器或执行临时 CRUD 操作。CqlTemplate还提供了回调方法,可以轻松获取低级 API 对象,例如<br>com.datastax.oss.driver.api.core.CqlSession,可以让您直接与 Cassandra 通信。Spring Data for Apache Cassandra 对各种 API 中的对象使用与 DataStax Java 驱动程序中的对象一致的命名约定,以便它们熟悉,并且您可以将现有知识映射到 Spring API。</span></span></p><h1 style="font-size: 1.056em; margin-top: 20px; margin-bottom: 20px; font-weight: 700; border: 0px; line-height: 1.579; position: relative; font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; text-align: justify;">9.1.入门</h1><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">Spring Data for Apache Cassandra 需要 Apache Cassandra 2.1 或更高版本以及 Datastax Java Driver 4.0 或更高版本。快速设置和引导工作环境的一种简单方法是在STS 中创建基于 Spring 的项目或使用Spring Initializer。</span></p><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;"><span style="border: 0px;">首先,您需要设置一个正在运行的 Apache Cassandra 服务器。有关 如何启动 Apache Cassandra 的说明,请参阅 Apache Cassandra 快速入门指南。一旦安装后,开始Cassandra是典型地执行以下命令的问题:<br>CASSANDRA_HOME/bin/cassandra -f。</span></span></p><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;"><span style="border: 0px;">要在 STS 中创建 Spring 项目,请转到 File → New → Spring Template Project → Simple Spring Utility Project,然后在出现提示时按 Yes。然后输入项目和包名称,例如<br>org.spring.data.cassandra.example.</span></span></p><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">然后,您可以将以下依赖项声明添加到 pom.xml 文件的dependencies部分。</span></p><pre style="font-family: Monaco; font-size: 18px; margin-top: 20px; margin-bottom: 20px; padding: 15px; border: 0px; background: rgb(250, 250, 250); word-break: break-all; border-radius: 3px; color: rgb(34, 34, 34); box-shadow: rgba(216, 216, 216, 0.5) 0px 0px 0px 1px inset;"><code style="font-family: inherit; font-size: 14px; margin-right: 0px; margin-left: 0px; padding: 0px; border: 0px; overflow-wrap: normal; word-break: normal; overflow-x: auto; line-height: 24px; white-space: pre !important;"><span style="border: 0px; color: rgb(17, 75, 166);">&lt;<span style="border: 0px;">dependencies</span>&gt;</span> <span style="border: 0px; color: rgb(17, 75, 166);">&lt;<span style="border: 0px;">dependency</span>&gt;</span> <span style="border: 0px; color: rgb(17, 75, 166);">&lt;<span style="border: 0px;">groupId</span>&gt;</span>org.springframework.data<span style="border: 0px; color: rgb(17, 75, 166);">&lt;/<span style="border: 0px;">groupId</span>&gt;</span> <span style="border: 0px; color: rgb(17, 75, 166);">&lt;<span style="border: 0px;">artifactId</span>&gt;</span>spring- style="box-sizing: border-box; margin: 0px; padding: 0px; border: 0px; color: rgb(17, 75, 166);"&gt;&lt;/<span style="border: 0px;">artifactId</span>&gt; <span style="border: 0px; color: rgb(17, 75, 166);">&lt;<span style="border: 0px;">version</span>&gt;</span>3.3.0<span style="border: 0px; color: rgb(17, 75, 166);">&lt;/<span style="border: 0px;">version</span>&gt;</span> <span style="border: 0px; color: rgb(17, 75, 166);">&lt;/<span style="border: 0px;">dependency</span>&gt;</span> <span style="border: 0px; color: rgb(17, 75, 166);">&lt;/<span style="border: 0px;">dependencies</span>&gt;</span></code></pre><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;">此外,您应该将 pom.xml 文件中的 Spring 版本更改为如下:</p><pre style="font-family: Monaco; font-size: 18px; margin-top: 20px; margin-bottom: 20px; padding: 15px; border: 0px; background: rgb(250, 250, 250); word-break: break-all; border-radius: 3px; color: rgb(34, 34, 34); box-shadow: rgba(216, 216, 216, 0.5) 0px 0px 0px 1px inset;"><code style="font-family: inherit; font-size: 14px; margin-right: 0px; margin-left: 0px; padding: 0px; border: 0px; overflow-wrap: normal; word-break: normal; overflow-x: auto; line-height: 24px; white-space: pre !important;"><span style="border: 0px; color: rgb(17, 75, 166);">&lt;<span style="border: 0px;">spring.framework.version</span>&gt;</span>5.3.13<span style="border: 0px; color: rgb(17, 75, 166);">&lt;/<span style="border: 0px;">spring.framework.version</span>&gt;</span></code></pre><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;">如果使用里程碑版本而不是 GA 版本,您还需要将 Maven 的 Spring Milestone 存储库的位置添加到您的 pom.xml 文件中,使其与您的&lt;dependencies/&gt;元素处于同一级别,如下所示:</p><pre style="font-family: Monaco; font-size: 18px; margin-top: 20px; margin-bottom: 20px; padding: 15px; border: 0px; background: rgb(250, 250, 250); word-break: break-all; border-radius: 3px; color: rgb(34, 34, 34); box-shadow: rgba(216, 216, 216, 0.5) 0px 0px 0px 1px inset;"><code style="font-family: inherit; font-size: 14px; margin-right: 0px; margin-left: 0px; padding: 0px; border: 0px; overflow-wrap: normal; word-break: normal; overflow-x: auto; line-height: 24px; white-space: pre !important;"><span style="border: 0px; color: rgb(17, 75, 166);">&lt;<span style="border: 0px;">repositories</span>&gt;</span> <span style="border: 0px; color: rgb(17, 75, 166);">&lt;<span style="border: 0px;">repository</span>&gt;</span> <span style="border: 0px; color: rgb(17, 75, 166);">&lt;<span style="border: 0px;">id</span>&gt;</span>spring-milestone<span style="border: 0px; color: rgb(17, 75, 166);">&lt;/<span style="border: 0px;">id</span>&gt;</span> <span style="border: 0px; color: rgb(17, 75, 166);">&lt;<span style="border: 0px;">name</span>&gt;</span>Spring Maven MILESTONE Repository<span style="border: 0px; color: rgb(17, 75, 166);">&lt;/<span style="border: 0px;">name</span>&gt;</span> <span style="border: 0px; color: rgb(17, 75, 166);">&lt;<span style="border: 0px;">url</span>&gt;</span>https://repo.spring.io/libs-milestone<span style="border: 0px; color: rgb(17, 75, 166);">&lt;/<span style="border: 0px;">url</span>&gt;</span> <span style="border: 0px; color: rgb(17, 75, 166);">&lt;/<span style="border: 0px;">repository</span>&gt;</span> <span style="border: 0px; color: rgb(17, 75, 166);">&lt;/<span style="border: 0px;">repositories</span>&gt;</span></code></pre><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;">存储库也可在此处浏览。</p><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;">您还可以在此处浏览所有 Spring 存储库。</p><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;">现在您可以创建一个简单的 Java 应用程序,该应用程序在 Cassandra 中存储和读取域对象。</p><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;">为此,首先创建一个简单的域对象类来持久化,如以下示例所示:</p><pre style="font-family: Monaco; font-size: 18px; margin-top: 20px; margin-bottom: 20px; padding: 15px; border: 0px; background: rgb(250, 250, 250); word-break: break-all; border-radius: 3px; color: rgb(34, 34, 34); box-shadow: rgba(216, 216, 216, 0.5) 0px 0px 0px 1px inset;"><code style="font-family: inherit; font-size: 14px; margin-right: 0px; margin-left: 0px; padding: 0px; border: 0px; overflow-wrap: normal; word-break: normal; overflow-x: auto; line-height: 24px; white-space: pre !important;"><span style="border: 0px; color: rgb(17, 75, 166);">package</span> org.springframework.<span style="border: 0px; color: rgb(17, 75, 166);">data</span>.cassandra.example; <span style="border: 0px; color: rgb(17, 75, 166);">import</span> org.springframework.<span style="border: 0px; color: rgb(17, 75, 166);">data</span>.cassandra.core.mapping.PrimaryKey; <span style="border: 0px; color: rgb(17, 75, 166);">import</span> org.springframework.<span style="border: 0px; color: rgb(17, 75, 166);">data</span>.cassandra.core.mapping.Table; <span style="border: 0px; color: rgb(0, 117, 59);">@Table</span> <span style="border: 0px; color: rgb(17, 75, 166);">public</span> <span style="border: 0px;"><span style="border: 0px; color: rgb(17, 75, 166);">class</span> <span style="border: 0px; color: rgb(168, 46, 46);">Person</span> </span>{ <span style="border: 0px; color: rgb(0, 117, 59);">@PrimaryKey</span> <span style="border: 0px; color: rgb(17, 75, 166);">private</span> <span style="border: 0px; color: rgb(17, 75, 166);">final</span> String id; <span style="border: 0px; color: rgb(17, 75, 166);">private</span> <span style="border: 0px; color: rgb(17, 75, 166);">final</span> String name; <span style="border: 0px; color: rgb(17, 75, 166);">private</span> <span style="border: 0px; color: rgb(17, 75, 166);">final</span> int age; <span style="border: 0px; color: rgb(17, 75, 166);">public</span> Person(String id, String name, int age) { <span style="border: 0px; color: rgb(17, 75, 166);">this</span>.id = id; <span style="border: 0px; color: rgb(17, 75, 166);">this</span>.name = name; <span style="border: 0px; color: rgb(17, 75, 166);">this</span>.age = age; } <span style="border: 0px; color: rgb(17, 75, 166);">public</span> String getId() { <span style="border: 0px; color: rgb(17, 75, 166);">return</span> id; } <span style="border: 0px; color: rgb(17, 75, 166);">private</span> String getName() { <span style="border: 0px; color: rgb(17, 75, 166);">return</span> name; } <span style="border: 0px; color: rgb(17, 75, 166);">private</span> int getAge() { <span style="border: 0px; color: rgb(17, 75, 166);">return</span> age; } <span style="border: 0px; color: rgb(0, 117, 59);">@Override</span> <span style="border: 0px; color: rgb(17, 75, 166);">public</span> String toString() { <span style="border: 0px; color: rgb(17, 75, 166);">return</span> String.format(<span style="border: 0px; color: rgb(0, 117, 59);">"{ @type = %1<span style="border: 0px; color: rgb(217, 99, 34);">$s</span>, id = %2<span style="border: 0px; color: rgb(217, 99, 34);">$s</span>, name = %3<span style="border: 0px; color: rgb(217, 99, 34);">$s</span>, age = %4<span style="border: 0px; color: rgb(217, 99, 34);">$d</span> }"</span>, getClass().getName(), getId(), getName(), getAge()); } }</code></pre><div style="margin-top: 18px; margin-bottom: 18px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><img src="https://p6.toutiaoimg.com/origin/tos-cn-i-qvj2lq49k0/e2f053cf16df45f88f71ec9926389b77?from=pc" img_width="795" img_height="617" alt="Spring认证中国教育管理中心-Apache Cassandra 的 Spring 数据" inline="0" style="border-width: 0px; border-style: initial; margin-right: auto; margin-bottom: 8px; margin-left: auto; cursor: zoom-in; max-width: 100%; display: block; border-radius: 4px; height: auto;"><p style="margin-top: 20px; border: 0px; margin-bottom: 0px !important;"></p></div><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">接下来,创建要运行的主应用程序,如以下示例所示:</span></p><pre style="font-family: Monaco; font-size: 18px; margin-top: 20px; margin-bottom: 20px; padding: 15px; border: 0px; background: rgb(250, 250, 250); word-break: break-all; border-radius: 3px; color: rgb(34, 34, 34); box-shadow: rgba(216, 216, 216, 0.5) 0px 0px 0px 1px inset;"><code style="font-family: inherit; font-size: 14px; margin-right: 0px; margin-left: 0px; padding: 0px; border: 0px; overflow-wrap: normal; word-break: normal; overflow-x: auto; line-height: 24px; white-space: pre !important;"><span style="border: 0px; color: rgb(17, 75, 166);">package</span> org.springframework.data.cassandra.example; <span style="border: 0px; color: rgb(17, 75, 166);">import</span> java.util.UUID; <span style="border: 0px; color: rgb(17, 75, 166);">import</span> org.slf4j.Logger; <span style="border: 0px; color: rgb(17, 75, 166);">import</span> org.slf4j.LoggerFactory; <span style="border: 0px; color: rgb(17, 75, 166);">import</span> org.springframework.data.cassandra.core.CassandraOperations; <span style="border: 0px; color: rgb(17, 75, 166);">import</span> org.springframework.data.cassandra.core.CassandraTemplate; <span style="border: 0px; color: rgb(17, 75, 166);">import</span> org.springframework.data.cassandra.core.query.Criteria; <span style="border: 0px; color: rgb(17, 75, 166);">import</span> org.springframework.data.cassandra.core.query.Query; <span style="border: 0px; color: rgb(17, 75, 166);">import</span> com.datastax.oss.driver.api.core.CqlSession; <span style="border: 0px; color: rgb(17, 75, 166);">public</span> <span style="border: 0px;"><span style="border: 0px; color: rgb(17, 75, 166);">class</span> <span style="border: 0px; color: rgb(168, 46, 46);">CassandraApplication</span> </span>{ <span style="border: 0px; color: rgb(17, 75, 166);">private</span> <span style="border: 0px; color: rgb(17, 75, 166);">static</span> <span style="border: 0px; color: rgb(17, 75, 166);">final</span> Logger LOGGER = LoggerFactory.getLogger(CassandraApplication<span style="border: 0px;">.<span style="border: 0px; color: rgb(17, 75, 166);">class</span>)</span>; <span style="border: 0px; color: rgb(138, 115, 4);"><span style="border: 0px; color: rgb(17, 75, 166);">private</span> <span style="border: 0px; color: rgb(17, 75, 166);">static</span> Person <span style="border: 0px; color: rgb(168, 46, 46);">newPerson</span><span style="border: 0px;">(String name, <span style="border: 0px; color: rgb(17, 75, 166);">int</span> age)</span> </span>{ <span style="border: 0px; color: rgb(17, 75, 166);">return</span> <span style="border: 0px; color: rgb(17, 75, 166);">new</span> Person(UUID.randomUUID().toString(), name, age); } <span style="border: 0px; color: rgb(138, 115, 4);"><span style="border: 0px; color: rgb(17, 75, 166);">public</span> <span style="border: 0px; color: rgb(17, 75, 166);">static</span> <span style="border: 0px; color: rgb(17, 75, 166);">void</span> <span style="border: 0px; color: rgb(168, 46, 46);">main</span><span style="border: 0px;">(String[] args)</span> </span>{ CqlSession cqlSession = CqlSession.builder().withKeyspace(<span style="border: 0px; color: rgb(0, 117, 59);">"mykeyspace"</span>).build(); CassandraOperations template = <span style="border: 0px; color: rgb(17, 75, 166);">new</span> CassandraTemplate(cqlSession); Person jonDoe = template.insert(newPerson(<span style="border: 0px; color: rgb(0, 117, 59);">"Jon Doe"</span>, <span style="border: 0px; color: rgb(168, 46, 46);">40</span>)); LOGGER.info(template.selectOne(Query.query(Criteria.where(<span style="border: 0px; color: rgb(0, 117, 59);">"id"</span>).is(jonDoe.getId())), Person<span style="border: 0px;">.<span style="border: 0px; color: rgb(17, 75, 166);">class</span>).<span style="border: 0px; color: rgb(168, 46, 46);">getId</span>())</span>; template.truncate(Person<span style="border: 0px;">.<span style="border: 0px; color: rgb(17, 75, 166);">class</span>)</span>; cqlSession.close(); } }</code></pre><div style="margin-top: 18px; margin-bottom: 18px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><img src="https://p6.toutiaoimg.com/origin/tos-cn-i-qvj2lq49k0/b7e14a81ee96414d93f81af41d8ec25a?from=pc" img_width="798" img_height="623" alt="Spring认证中国教育管理中心-Apache Cassandra 的 Spring 数据" inline="0" style="border-width: 0px; border-style: initial; margin-right: auto; margin-bottom: 8px; margin-left: auto; cursor: zoom-in; max-width: 100%; display: block; border-radius: 4px; height: auto;"><p style="margin-top: 20px; border: 0px; margin-bottom: 0px !important;"></p></div><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">即使在这个简单的例子中,也有一些值得注意的地方需要指出:</span></p><ul style="margin: 20px 30px; border: 0px; counter-reset: ul_list 0; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><li style="list-style-type: none; border: 0px;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">您可以CassandraTemplate使用 Cassandra创建一个实例CqlSession。</span></li><li style="list-style-type: none; border: 0px;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">您必须将您的 POJO 注释为 Cassandra@Table实体,并注释@PrimaryKey. 或者,您可以覆盖这些映射名称以匹配您的 Cassandra 数据库表和列名称。</span></li><li style="list-style-type: none; border: 0px;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">您可以使用原始 CQL 或 DataStax QueryBuilderAPI 来构建您的查询。</span></li></ul><h1 style="font-size: 1.056em; margin-top: 20px; margin-bottom: 20px; font-weight: 700; border: 0px; line-height: 1.579; position: relative; font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; text-align: justify;">9.2.示例库</h1><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">要了解库的工作原理,您可以下载并试用 几个示例。.</span></p><h1 style="font-size: 1.056em; margin-top: 20px; margin-bottom: 20px; font-weight: 700; border: 0px; line-height: 1.579; position: relative; font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; text-align: justify;">9.3.使用 Spring 连接到 Cassandra</h1><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;"><span style="border: 0px;">在 Spring 中使用 Apache Cassandra 时的首要任务之一是<br>com.datastax.oss.driver.api.core.CqlSession使用 Spring IoC 容器创建对象。您可以通过使用基于 Java 的 bean 元数据或使用基于 XML 的 bean 元数据来实现。这些将在以下各节中讨论。</span></span></p><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;">对于那些不熟悉如何配置使用基于Java bean的元数据,而不是基于XML的元数据Spring容器,请参阅参考文档的高级介绍 这里 还有详细的文档在这里。</p><h1 style="font-size: 1.056em; margin-top: 20px; margin-bottom: 20px; font-weight: 700; border: 0px; line-height: 1.579; position: relative; font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; text-align: justify;">9.3.1.使用基于 Java 的元数据注册会话实例</h1><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;"><span style="border: 0px;">以下示例显示了如何使用基于 Java 的 bean 元数据来注册 a 的实例<br>com.datastax.oss.driver.api.core.CqlSession:</span></span></p><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="font-weight: 700; border: 0px;"><span style="border: 0px; color: rgb(11, 10, 10); --tt-darkmode-color: #A5A2A2;"><span style="border: 0px;">示例<br>54.com.datastax.oss.driver.api.core.CqlSession使用基于 Java 的 bean 元数据注册对象</span></span></span></p><pre style="font-family: Monaco; font-size: 18px; margin-top: 20px; margin-bottom: 20px; padding: 15px; border: 0px; background: rgb(250, 250, 250); word-break: break-all; border-radius: 3px; color: rgb(34, 34, 34); box-shadow: rgba(216, 216, 216, 0.5) 0px 0px 0px 1px inset;"><code style="font-family: inherit; font-size: 14px; margin-right: 0px; margin-left: 0px; padding: 0px; border: 0px; overflow-wrap: normal; word-break: normal; overflow-x: auto; line-height: 24px; white-space: pre !important;"><span style="border: 0px; color: rgb(0, 117, 59);">@Configuration</span> <span style="border: 0px; color: rgb(17, 75, 166);">public</span> <span style="border: 0px;"><span style="border: 0px; color: rgb(17, 75, 166);">class</span> <span style="border: 0px; color: rgb(168, 46, 46);">AppConfig</span> </span>{ <span style="border: 0px; color: rgb(153, 153, 153);">/* * Use the standard Cassandra driver API to create a com.datastax.oss.driver.api.core.CqlSession instance. */</span> <span style="border: 0px; color: rgb(17, 75, 166);">public</span> <span style="border: 0px; color: rgb(0, 117, 59);">@Bean</span> <span style="border: 0px; color: rgb(138, 115, 4);">CqlSession <span style="border: 0px; color: rgb(168, 46, 46);">session</span><span style="border: 0px;">()</span> </span>{ <span style="border: 0px; color: rgb(17, 75, 166);">return</span> CqlSession.builder().withKeyspace(<span style="border: 0px; color: rgb(0, 117, 59);">"mykeyspace"</span>).build(); } }</code></pre><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;"><span style="border: 0px;">这种方法让您可以使用<br>com.datastax.oss.driver.api.core.CqlSession您可能已经知道的标准API。</span></span></p><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;"><span style="border: 0px;">另一种方法是<br>com.datastax.oss.driver.api.core.CqlSession使用 Spring 的CqlSessionFactoryBean. 与com.datastax.oss.driver.api.core.CqlSession直接实例化实例相比,该FactoryBean方法还有一个额外的优势,即还为容器提供了一个ExceptionTranslator实现,将 Cassandra 异常转换为 Spring 可移植DataAccessException层次结构中的异常。Spring 的 DAO 支持特性中@Repository描述了这种层次结构和使用 。</span></span></p><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">以下示例显示了基于 Java 的工厂类用法:</span></p><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="font-weight: 700; border: 0px;"><span style="border: 0px; color: rgb(11, 10, 10); --tt-darkmode-color: #A5A2A2;"><span style="border: 0px;">示例 55. 使用 Spring 的注册<br>com.datastax.oss.driver.api.core.CqlSession 对象CqlSessionFactoryBean:</span></span></span></p><pre style="font-family: Monaco; font-size: 18px; margin-top: 20px; margin-bottom: 20px; padding: 15px; border: 0px; background: rgb(250, 250, 250); word-break: break-all; border-radius: 3px; color: rgb(34, 34, 34); box-shadow: rgba(216, 216, 216, 0.5) 0px 0px 0px 1px inset;"><code style="font-family: inherit; font-size: 14px; margin-right: 0px; margin-left: 0px; padding: 0px; border: 0px; overflow-wrap: normal; word-break: normal; overflow-x: auto; line-height: 24px; white-space: pre !important;"><span style="border: 0px; color: rgb(0, 117, 59);">@Configuration</span> <span style="border: 0px; color: rgb(17, 75, 166);">public</span> <span style="border: 0px;"><span style="border: 0px; color: rgb(17, 75, 166);">class</span> <span style="border: 0px; color: rgb(168, 46, 46);">FactoryBeanAppConfig</span> </span>{ <span style="border: 0px; color: rgb(153, 153, 153);">/* * Factory bean that creates the com.datastax.oss.driver.api.core.CqlSession instance */</span> <span style="border: 0px; color: rgb(0, 117, 59);">@Bean</span> <span style="border: 0px; color: rgb(138, 115, 4);"><span style="border: 0px; color: rgb(17, 75, 166);">public</span> CqlSessionFactoryBean <span style="border: 0px; color: rgb(168, 46, 46);">session</span><span style="border: 0px;">()</span> </span>{ CqlSessionFactoryBean session = <span style="border: 0px; color: rgb(17, 75, 166);">new</span> CqlSessionFactoryBean(); session.setContactPoints(<span style="border: 0px; color: rgb(0, 117, 59);">"localhost"</span>); session.setKeyspaceName(<span style="border: 0px; color: rgb(0, 117, 59);">"mykeyspace"</span>); <span style="border: 0px; color: rgb(17, 75, 166);">return</span> session; } }</code></pre><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">使用CassandraTemplate与对象映射和存储库支持需要CassandraTemplate, CassandraMappingContext,CassandraConverter,和使储存库支持。</span></p><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;">以下示例显示了如何注册组件以配置对象映射和存储库支持:</span></p><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="font-weight: 700; border: 0px;"><span style="border: 0px; color: rgb(11, 10, 10); --tt-darkmode-color: #A5A2A2;">示例 56. 注册组件以配置对象映射和存储库支持</span></span></p><pre style="font-family: Monaco; font-size: 18px; margin-top: 20px; margin-bottom: 20px; padding: 15px; border: 0px; background: rgb(250, 250, 250); word-break: break-all; border-radius: 3px; color: rgb(34, 34, 34); box-shadow: rgba(216, 216, 216, 0.5) 0px 0px 0px 1px inset;"><code style="font-family: inherit; font-size: 14px; margin-right: 0px; margin-left: 0px; padding: 0px; border: 0px; overflow-wrap: normal; word-break: normal; overflow-x: auto; line-height: 24px; white-space: pre !important;"><span style="border: 0px; color: rgb(0, 117, 59);">@Configuration</span> <span style="border: 0px; color: rgb(0, 117, 59);">@EnableCassandraRepositories</span>(basePackages = { <span style="border: 0px; color: rgb(0, 117, 59);">"org.springframework.data.cassandra.example"</span> }) <span style="border: 0px; color: rgb(17, 75, 166);">public</span> <span style="border: 0px;"><span style="border: 0px; color: rgb(17, 75, 166);">class</span> <span style="border: 0px; color: rgb(168, 46, 46);">CassandraConfig</span> </span>{ <span style="border: 0px; color: rgb(0, 117, 59);">@Bean</span> <span style="border: 0px; color: rgb(138, 115, 4);"><span style="border: 0px; color: rgb(17, 75, 166);">public</span> CqlSessionFactoryBean <span style="border: 0px; color: rgb(168, 46, 46);">session</span><span style="border: 0px;">()</span> </span>{ CqlSessionFactoryBean session = <span style="border: 0px; color: rgb(17, 75, 166);">new</span> CqlSessionFactoryBean(); session.setContactPoints(<span style="border: 0px; color: rgb(0, 117, 59);">"localhost"</span>); session.setKeyspaceName(<span style="border: 0px; color: rgb(0, 117, 59);">"mykeyspace"</span>); <span style="border: 0px; color: rgb(17, 75, 166);">return</span> session; } <span style="border: 0px; color: rgb(0, 117, 59);">@Bean</span> <span style="border: 0px; color: rgb(138, 115, 4);"><span style="border: 0px; color: rgb(17, 75, 166);">public</span> SessionFactoryFactoryBean <span style="border: 0px; color: rgb(168, 46, 46);">sessionFactory</span><span style="border: 0px;">(CqlSession session, CassandraConverter converter)</span> </span>{ SessionFactoryFactoryBean sessionFactory = <span style="border: 0px; color: rgb(17, 75, 166);">new</span> SessionFactoryFactoryBean(); sessionFactory.setSession(session); sessionFactory.setConverter(converter); sessionFactory.setSchemaAction(SchemaAction.NONE); <span style="border: 0px; color: rgb(17, 75, 166);">return</span> sessionFactory; } <span style="border: 0px; color: rgb(0, 117, 59);">@Bean</span> <span style="border: 0px; color: rgb(138, 115, 4);"><span style="border: 0px; color: rgb(17, 75, 166);">public</span> CassandraMappingContext <span style="border: 0px; color: rgb(168, 46, 46);">mappingContext</span><span style="border: 0px;">(CqlSession cqlSession)</span> </span>{ CassandraMappingContext mappingContext = <span style="border: 0px; color: rgb(17, 75, 166);">new</span> CassandraMappingContext(); mappingContext.setUserTypeResolver(<span style="border: 0px; color: rgb(17, 75, 166);">new</span> SimpleUserTypeResolver(cqlSession)); <span style="border: 0px; color: rgb(17, 75, 166);">return</span> mappingContext; } <span style="border: 0px; color: rgb(0, 117, 59);">@Bean</span> <span style="border: 0px; color: rgb(138, 115, 4);"><span style="border: 0px; color: rgb(17, 75, 166);">public</span> CassandraConverter <span style="border: 0px; color: rgb(168, 46, 46);">converter</span><span style="border: 0px;">(CassandraMappingContext mappingContext)</span> </span>{ <span style="border: 0px; color: rgb(17, 75, 166);">return</span> <span style="border: 0px; color: rgb(17, 75, 166);">new</span> MappingCassandraConverter(mappingContext); } <span style="border: 0px; color: rgb(0, 117, 59);">@Bean</span> <span style="border: 0px; color: rgb(138, 115, 4);"><span style="border: 0px; color: rgb(17, 75, 166);">public</span> CassandraOperations <span style="border: 0px; color: rgb(168, 46, 46);">cassandraTemplate</span><span style="border: 0px;">(SessionFactory sessionFactory, CassandraConverter converter)</span> </span>{ <span style="border: 0px; color: rgb(17, 75, 166);">return</span> <span style="border: 0px; color: rgb(17, 75, 166);">new</span> CassandraTemplate(sessionFactory, converter); } }</code></pre><div style="margin-top: 18px; margin-bottom: 18px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><img src="https://p6.toutiaoimg.com/origin/tos-cn-i-qvj2lq49k0/4fc036dfff1840019a9c3ae38d88b916?from=pc" img_width="797" img_height="721" alt="Spring认证中国教育管理中心-Apache Cassandra 的 Spring 数据" inline="0" style="border-width: 0px; border-style: initial; margin-right: auto; margin-bottom: 8px; margin-left: auto; cursor: zoom-in; max-width: 100%; display: block; border-radius: 4px; height: auto;"><p style="margin-top: 20px; border: 0px; margin-bottom: 0px !important;"></p></div><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="border: 0px; color: rgb(0, 0, 0); --tt-darkmode-color: #A3A3A3;"><span style="border: 0px;">创建为 Apache Cassandra 组件注册 Spring Data 的配置类可能是一个令人筋疲力尽的挑战,因此 Spring Data for Apache Cassandra 附带了一个预构建的配置支持类。从<br>AbstractCassandraConfiguration用于 Apache Cassandra 的 Spring Data 注册 bean扩展的类 。&nbsp;AbstractCassandraConfiguration允许您提供各种配置选项,例如初始实体、默认查询选项、池选项、套接字选项等等。AbstractCassandraConfiguration还支持您根据初始实体(如果提供)生成模式。扩展 from&nbsp;AbstractCassandraConfiguration要求您至少通过实现该getKeyspaceName方法提供键空间名称。以下示例显示了如何使用 注册 bean&nbsp;AbstractCassandraConfiguration:</span></span></p><p style="margin-top: 20px; margin-bottom: 20px; border: 0px; color: rgb(34, 34, 34); font-family: &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif; font-size: 18px; text-align: justify;"><span style="font-weight: 700; border: 0px;"><span style="border: 0px; color: rgb(11, 10, 10); --tt-darkmode-color: #A5A2A2;"><span style="border: 0px;">示例 57. 使用以下命令为 Apache Cassandra bean 注册 Spring Data<br>AbstractCassandraConfiguration</span></span></span></p><pre style="font-family: Monaco; font-size: 18px; margin-top: 20px; margin-bottom: 20px; padding: 15px; border: 0px; background: rgb(250, 250, 250); word-break: break-all; border-radius: 3px; color: rgb(34, 34, 34); box-shadow: rgba(216, 216, 216, 0.5) 0px 0px 0px 1px inset;"><code style="font-family: inherit; font-size: 14px; margin-right: 0px; margin-left: 0px; padding: 0px; border: 0px; overflow-wrap: normal; word-break: normal; overflow-x: auto; line-height: 24px; white-space: pre !important;"><span style="border: 0px; color: rgb(0, 117, 59);">@Configuration</span> <span style="border: 0px; color: rgb(17, 75, 166);">public</span> <span style="border: 0px;"><span style="border: 0px; color: rgb(17, 75, 166);">class</span> <span style="border: 0px; color: rgb(168, 46, 46);">CassandraConfiguration</span> <span style="border: 0px; color: rgb(17, 75, 166);">extends</span> <span style="border: 0px; color: rgb(168, 46, 46);">AbstractCassandraConfiguration</span> </span>{ <span style="border: 0px; color: rgb(153, 153, 153);">/* * Provide a contact point to the configuration. */</span> <span style="border: 0px; color: rgb(138, 115, 4);"><span style="border: 0px; color: rgb(17, 75, 166);">public</span> String <span style="border: 0px; color: rgb(168, 46, 46);">getContactPoints</span><span style="border: 0px;">()</span> </span>{ <span style="border: 0px; color: rgb(17, 75, 166);">return</span> <span style="border: 0px; color: rgb(0, 117, 59);">"localhost"</span>; } <span style="border: 0px; color: rgb(153, 153, 153);">/* * Provide a keyspace name to the configuration. */</span> <span style="border: 0px; color: rgb(138, 115, 4);"><span style="border: 0px; color: rgb(17, 75, 166);">public</span> String <span style="border: 0px; color: rgb(168, 46, 46);">getKeyspaceName</span><span style="border: 0px;">()</span> </span>{ <span style="border: 0px; color: rgb(17, 75, 166);">return</span> <span style="border: 0px; color: rgb(0, 117, 59);">"mykeyspace"</span>; } }</code></pre>
收藏(0)  分享
相关标签: spring
0个回复
  • 消灭零回复