0

Oracle NoSQL データベースを Spring データと一緒に使用したいと考えています。目的は、Spring データ リポジトリを介してデータにアクセスし、その上にある Spring データ レストを使用することです。したがって、spring-data-keyvalue プロジェクトは、Oracle NoSQL KV 用のアダプターを実装するのに役立つと思います。

spring-data-keyvalue のドキュメント ( http://docs.spring.io/spring-data/keyvalue/docs/current/reference/html/#key-value.core-concepts )を理解しようとしましたが、理解できませんでした。わかりません。アダプターをゼロから実装する方法に関する例/チュートリアルは非常に役立ちます。

私が持っているのは、カスタム KeyValueAdapter を提供するこの構成クラスです。CrudRepository メソッドを使用すると、カスタム アダプターが使用されます。

@Configuration
@EnableMapRepositories
public class KeyValueConfig {

     @Bean
     public KeyValueOperations keyValueTemplate() {
         return new KeyValueTemplate(new OracleKeyValueAdapter());
    }
}

OracleKeyValueAdapter は KeyValueAdapter の実装です。spring-data-keyvalue-redis プロジェクトからこれを取得しました ( https://github.com/christophstrobl/spring-data-keyvalue-redis/blob/master/src/main/java/org/springframework/data/keyvalue/ redis/RedisKeyValueAdapter.java )

public class OracleKeyValueAdapter extends AbstractKeyValueAdapter {

private KVStore store;

public OracleKeyValueAdapter() {
    String storeName = "kvstore";
    String hostName = "localhost";
    String hostPort = "5000";

    store = KVStoreFactory.getStore
            (new KVStoreConfig(storeName, hostName + ":" + hostPort));
}

//Custom implementations: 

@Override
public Object put(Serializable serializable, Object o, Serializable 
serializable1) {
    return null;
}

@Override
public boolean contains(Serializable serializable, Serializable 
serializable1) {
    return false;
}

.
.
.

今、私はこの OracleKeyValueAdapter を実装しようとしていますが、それが理にかなっているのかどうかはわかりません。

手伝って頂けますか?

4

3 に答える 3

0

Spring KeyValue リポジトリのソースを見ました: https://github.com/spring-projects/spring-data-keyvalue

Spring リポジトリが内部でどのように機能するかを理解することをお勧めします。

独自のリポジトリ (CustomKeyValueRepository) を実現する場合は、少なくとも 6 つのクラスを作成する必要があります

  • EnableCustomKeyValueRepositories - プロジェクトでリポジトリ タイプを有効にするためのアノテーション。
  • CustomKeyValueRepositoriesRegistrar - このアノテーションの登録者。
  • CustomKeyValueRepository - リポジトリ
  • CustomKeyValueRepositoryConfigurationExtension - Spring ConfigurationExtension の実装。
  • CustomKeyValueAdapter - データ ストアのカスタム アダプターの実装。
  • CustomKeyValueConfiguration - Bean アダプターおよびテンプレートの構成。

この方法で Infinispan KeyValue リポジトリをコーディングします: https://github.com/OsokinAlexander/infinispan-spring-repository

これに関する記事も書いています: https://habr.com/ru/post/535218/ Chrome では、自分の言語に翻訳できます。

CustomKeyValueAdapter と Configuration のみを実装しようとする最も簡単な方法です。構成では、Spring KeyValueAdapter Bean と KeyValueTemplate を再定義する必要があります (Bean の名前が小文字であることが非常に重要です。これが私にとって唯一の方法です)。

@Configuration
public class CustomKeyValueConfiguration extends CachingConfigurerSupport {

  @Autowired
  private ApplicationContext applicationContext;

  @Bean
  public CustomKeyValueAdapter getKeyValueAdapter() {
    return new CustomKeyValueAdapter();
  }

  @Bean("keyValueTemplate")
  public KeyValueTemplate getKeyValueTemplate() {
    return new KeyValueTemplate(getKeyValueAdapter());
  }
}
于 2021-03-23T11:46:45.160 に答える