小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Spring認(rèn)證中國教育管理中心-Apache Cassandra 的 Spring 數(shù)據(jù)教程六

 王先生的內(nèi)容 2021-12-14

10.3.1.使用基于 Java 的元數(shù)據(jù)注冊 Session 實例

您可以使用Java 配置類來配置響應(yīng)式 Cassandra 支持。CqlSession響應(yīng)式Cassandra 支持改編為在異步驅(qū)動程序之上提供響應(yīng)式處理模型。

反應(yīng)式CqlSession的配置類似于命令式CqlSession。我們提供帶有預(yù)定義默認(rèn)值的支持配置類,并且只需要特定于環(huán)境的信息來為 Apache Cassandra 配置 Spring Data。反應(yīng)式支持的基類是
AbstractReactiveCassandraConfiguration. 這個配置類擴(kuò)展了命令式AbstractCassandraConfiguration,所以反應(yīng)式支持也配置了命令式 API 支持。以下示例顯示如何在配置類中注冊 Apache Cassandra bean: ReactiveAppCassandraConfiguration .Registering Spring Data for Apache Cassandra beans usingAbstractReactiveCassandraConfiguration

@Configurationpublic class ReactiveCassandraConfiguration extends AbstractReactiveCassandraConfiguration {  /*
   * Provide a contact point to the configuration.
   */
  public String getContactPoints() {    return "localhost";
  }  /*
   * Provide a keyspace name to the configuration.
   */
  public String getKeyspaceName() {    return "mykeyspace";
  }
}

前面示例中的配置類啟用了模式管理以在啟動期間創(chuàng)建 CQL 對象。有關(guān)更多詳細(xì)信息,請參閱架構(gòu)管理。

10.4.ReactiveCqlTemplate

的ReactiveCqlTemplate類是在芯CQL包的核心類。它處理資源的創(chuàng)建和釋放。它執(zhí)行核心 CQL 工作流的基本任務(wù),例如創(chuàng)建和運(yùn)行語句,留下應(yīng)用程序代碼以提供 CQL 和提取結(jié)果。該ReactiveCqlTemplate班運(yùn)行CQL的查詢和更新語句,并在執(zhí)行迭代ResultSet情況下,返回的參數(shù)值的提取。它還捕獲 CQL 異常并將它們轉(zhuǎn)換為org.springframework.dao包中定義的通用的、信息更豐富的異常層次結(jié)構(gòu)。

當(dāng)你ReactiveCqlTemplate在你的代碼中使用 時,你只需要實現(xiàn)回調(diào)接口,它有一個明確定義的契約。給定 a Connection,
ReactivePreparedStatementCreator回調(diào)接口使用提供的 CQL 和任何必要的參數(shù)參數(shù)創(chuàng)建一個準(zhǔn)備好的語句。該RowCallbackHandler 接口從 a 的每一行中提取值ReactiveResultSet。

ReactiveCqlTemplate可以通過ReactiveSessionFactory 引用直接實例化在 DAO 實現(xiàn)中使用,也可以在 Spring 容器中配置并作為 bean 引用提供給 DAO。ReactiveCqlTemplate是
ReactiveCassandraTemplate.

此類發(fā)布的所有 CQL 都記錄在與DEBUG模板實例的完全限定類名對應(yīng)的類別下的級別(通常為ReactiveCqlTemplate,但如果您使用ReactiveCqlTemplate該類的自定義子類,則可能會有所不同)。

10.4.1.ReactiveCqlTemplate類使用示例

本節(jié)提供了一些ReactiveCqlTemplate類使用示例。這些示例并不是ReactiveCqlTemplate. 請參閱隨附的 Javadocs。

查詢 (SELECT) 與ReactiveCqlTemplate

以下查詢獲取關(guān)系中的行數(shù):

Mono<Integer> rowCount = reactiveCqlTemplate.queryForObject("SELECT COUNT(*) FROM t_actor", Integer.class);

以下查詢使用綁定變量:

Mono<Integer> countOfActorsNamedJoe = reactiveCqlTemplate.queryForObject(  "SELECT COUNT(*) FROM t_actor WHERE first_name = ?", Integer.class, "Joe");

以下示例查詢 a String:

Mono<String> lastName = reactiveCqlTemplate.queryForObject(  "SELECT last_name FROM t_actor WHERE id = ?",
  String.class, 1212L);

以下示例查詢并填充單個域?qū)ο螅?/p>

Mono<Actor> actor = reactiveCqlTemplate.queryForObject(  "SELECT first_name, last_name FROM t_actor WHERE id = ?",  new RowMapper<Actor>() {    public Actor mapRow(Row row, int rowNum) {
      Actor actor = new Actor();
      actor.setFirstName(row.getString("first_name"));
      actor.setLastName(row.getString("last_name"));      return actor;
    }},  1212L);

以下示例查詢并填充多個域?qū)ο螅?/p>

Flux<Actor> actors = reactiveCqlTemplate.query("SELECT first_name, last_name FROM t_actor",  new RowMapper<Actor>() {    public Actor mapRow(Row row, int rowNum) {
      Actor actor = new Actor();
      actor.setFirstName(row.getString("first_name"));
      actor.setLastName(row.getString("last_name"));      return actor;
    }
});

如果最后兩個代碼片段確實存在于同一個應(yīng)用程序中,那么刪除兩個RowMapper匿名內(nèi)部類中存在的重復(fù)并將它們提取到一個類(通常是static嵌套類)中是有意義的,然后可以由 DAO 方法引用如所須。

例如,將最后一個代碼片段編寫如下可能會更好:

Flux<Actor> findAllActors() {  return reactiveCqlTemplate.query("SELECT first_name, last_name FROM t_actor", ActorMapper.INSTANCE);
}enum ActorMapper implements RowMapper<Actor> {

  INSTANCE;  public Actor mapRow(Row row, int rowNum) {
    Actor actor = new Actor();
    actor.setFirstName(row.getString("first_name"));
    actor.setLastName(row.getString("last_name"));    return actor;
  }
}

INSERT,UPDATE以及DELETE用ReactiveCqlTemplate

您可以使用該execute(…)方法來執(zhí)行INSERT,UPDATE和DELETE操作。參數(shù)值通常作為可變參數(shù)提供,或者作為對象數(shù)組提供。

以下示例顯示如何使用 執(zhí)行INSERT操作ReactiveCqlTemplate:

Mono<Boolean> applied = reactiveCqlTemplate.execute(  "INSERT INTO t_actor (first_name, last_name) VALUES (?, ?)",  "Leonor", "Watling");

以下示例顯示如何使用 執(zhí)行UPDATE操作ReactiveCqlTemplate:

Mono<Boolean> applied = reactiveCqlTemplate.execute(  "UPDATE t_actor SET last_name = ? WHERE id = ?",  "Banjo", 5276L);

以下示例顯示如何使用 執(zhí)行DELETE操作ReactiveCqlTemplate:

Mono<Boolean> applied = reactiveCqlTemplate.execute(  "DELETE FROM actor WHERE id = ?",
  actorId);

Spring認(rèn)證中國教育管理中心-Apache Cassandra 的 Spring 數(shù)據(jù)教程六

10.5.異常翻譯

Spring Framework 為各種數(shù)據(jù)庫和映射技術(shù)提供異常轉(zhuǎn)換。這在傳統(tǒng)上用于 JDBC 和 JPA。Spring Data for Apache Cassandra 通過提供
org.springframework.dao.support.PersistenceExceptionTranslator接口的實現(xiàn)將此功能擴(kuò)展到 Apache Cassandra 。

映射到 Spring 的一致數(shù)據(jù)訪問異常層次結(jié)構(gòu)背后的動機(jī) 是讓您編寫可移植和描述性的異常處理代碼,而無需針對特定的 Cassandra 異常進(jìn)行編碼和處理。Spring 的所有數(shù)據(jù)訪問異常都繼承自 DataAccessException該類,因此您可以確保可以在單個 try-catch 塊中捕獲所有與數(shù)據(jù)庫相關(guān)的異常。

ReactiveCqlTemplate并ReactiveCassandraTemplate盡早傳播異常。在處理反應(yīng)序列期間出現(xiàn)的異常作為錯誤信號發(fā)出。

10.6.簡介ReactiveCassandraTemplate

該ReactiveCassandraTemplate班,地處
org.springframework.data.cassandra包,是在Spring Data的卡桑德拉支持的核心類。它提供了豐富的功能集來與數(shù)據(jù)庫交互。該模板提供方便的數(shù)據(jù)訪問操作來創(chuàng)建、更新、刪除和查詢 Cassandra,并提供域?qū)ο蠛?Cassandra 表行之間的映射。

配置后,ReactiveCassandraTemplate就是線程安全的,可以跨多個實例重復(fù)使用。

Cassandra 表中的行和域類之間的映射是通過委托給CassandraConverter接口的實現(xiàn)來完成的。Spring 提供了默認(rèn)實現(xiàn),MappingCassandraConverter但您也可以編寫自己的自定義轉(zhuǎn)換器。有關(guān)更多詳細(xì)信息,請參閱“映射”。

本ReactiveCassandraTemplate類實現(xiàn)了
ReactiveCassandraOperations接口。方法名稱盡可能ReactiveCassandraOperations與 Cassandra 中的名稱匹配,以使熟悉 Cassandra 的開發(fā)人員熟悉 API。

例如,你可以找到方法,例如select,insert,delete,和update。設(shè)計目標(biāo)是盡可能輕松地在基本 Cassandra 驅(qū)動程序和
ReactiveCassandraOperations. 兩個 API 之間的主要區(qū)別是ReactiveCassandraOperations可以傳遞域?qū)ο蠖皇?CQL 和查詢對象。

在ReactiveCassandraTemplate實例上引用操作的首選方法是通過其接口
ReactiveCassandraOperations.

的默認(rèn)轉(zhuǎn)換器實現(xiàn)ReactiveCassandraTemplate是
MappingCassandraConverter. 雖然MappingCassandraConverter可以使用附加元數(shù)據(jù)來指定對象到行的映射,但它也可以通過使用字段和表名稱映射的約定來轉(zhuǎn)換不包含附加元數(shù)據(jù)的對象。這些約定以及映射注釋的使用在“映射”中進(jìn)行了解釋。

的另一個核心特征CassandraTemplate是異常翻譯。Cassandra Java 驅(qū)動程序拋出的異常被轉(zhuǎn)換為 Spring 的可移植數(shù)據(jù)訪問異常層次結(jié)構(gòu)。有關(guān)更多信息,請參閱“異常翻譯”。

10.6.1.實例化ReactiveCassandraTemplate

ReactiveCassandraTemplate應(yīng)該始終配置為 Spring bean,盡管前面的示例顯示了如何直接實例化它。但是,本節(jié)假定模板在 Spring 模塊中使用,因此也假定正在使用 Spring 容器。

有兩種方法可以獲取 a ReactiveCassandraTemplate,具體取決于您加載 Spring 的方式ApplicationContext:

  • 自動裝配

  • Bean 查找 ApplicationContext

自動裝配

您可以將 a 自動裝配ReactiveCassandraTemplate到您的項目中,如以下示例所示:

@Autowiredprivate ReactiveCassandraOperations reactiveCassandraOperations;

像所有的春天自動連接,這是假定只有一個bean類型的
ReactiveCassandraOperations中ApplicationContext。如果您有多個ReactiveCassandraTemplatebean(如果您在同一個項目中使用多個鍵空間就可能是這種情況),那么您可以使用@Qualifier注釋來指定要自動裝配的 bean。

@Autowired@Qualifier("keyspaceTwoTemplateBeanId")
private ReactiveCassandraOperations reactiveCassandraOperations;

Bean 查找ApplicationContext

您還可以ReactiveCassandraTemplate從 中查找bean ApplicationContext,如以下示例所示:

ReactiveCassandraOperations reactiveCassandraOperations = applicationContext.getBean("reactiveCassandraOperations", ReactiveCassand

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多