クラス ShardingKeyDataSourceAdapter

java.lang.ObjectSE
org.springframework.jdbc.datasource.DelegatingDataSource
org.springframework.jdbc.datasource.ShardingKeyDataSourceAdapter
実装されたすべてのインターフェース:
WrapperSECommonDataSourceSEDataSourceSEInitializingBean

public class ShardingKeyDataSourceAdapter extends DelegatingDataSource
ターゲット DataSourceSE 用のアダプター。シャーディングキーが指定されている場合、すべての標準 #getConnection 呼び出しに適用し、指定されたシャーディングキー値に対応するシャードへの直接接続を返すように設計されています。他のすべてのメソッドは、ターゲット DataSource の対応するメソッドに単純に委譲します。

ターゲット DataSource は createConnectionBuilder() メソッドを実装する必要があります。そうしないと、シャード接続を取得しようとすると SQLFeatureNotSupportedExceptionSE がスローされます。

このアダプターは、#getConnection 呼び出しごとに現在のシャーディングキーを取得するために使用される ShardingKeyProvider コールバックを使用して構成する必要があります。例:

 ShardingKeyDataSourceAdapter dataSourceAdapter = new ShardingKeyDataSourceAdapter(dataSource);
 dataSourceAdapter.setShardingKeyProvider(() -> dataSource.createShardingKeyBuilder()
     .subkey(SecurityContextHolder.getContext().getAuthentication().getName(), JDBCType.VARCHAR).build());
 
導入:
6.1.2
作成者:
Mohamed Lahyane (Anir), Juergen Hoeller
関連事項:
  • コンストラクターの詳細

    • ShardingKeyDataSourceAdapter

      public ShardingKeyDataSourceAdapter(DataSourceSE dataSource)
      指定された DataSourceSE をラップして、ShardingKeyDataSourceAdapter の新しいインスタンスを作成します。
      パラメーター:
      dataSource - ラップされるターゲット DataSource 
    • ShardingKeyDataSourceAdapter

      public ShardingKeyDataSourceAdapter(DataSourceSE dataSource, ShardingKeyProvider shardingKeyProvider)
      指定された DataSourceSE をラップして、ShardingKeyDataSourceAdapter の新しいインスタンスを作成します。
      パラメーター:
      dataSource - ラップされるターゲット DataSource 
      shardingKeyProvider - シャーディングキーの取得に使用される ShardingKeyProvider 
  • メソッドの詳細

    • setShardingKeyProvider

      public void setShardingKeyProvider(ShardingKeyProvider shardingKeyProvider)
      このアダプターには ShardingKeyProvider を設定します。
    • getConnection

      public ConnectionSE getConnection() throws SQLExceptionSE
      提供されたシャーディングキーとスーパーシャーディングキー (使用可能な場合) を使用して、データベースシャードへの接続を取得します。

      シャーディングキーは、構成された ShardingKeyProvider から取得されます。

      次で指定:
      インターフェース DataSourceSEgetConnection 
      オーバーライド:
      クラス DelegatingDataSourcegetConnection 
      戻り値:
      直接シャード接続を表す Connection オブジェクト
      例外:
      SQLExceptionSE - 接続の作成中にエラーが発生した場合
      関連事項:
    • getConnection

      public ConnectionSE getConnection(StringSE username, StringSE password) throws SQLExceptionSE
      シャーディングキー (使用可能な場合) と指定された資格情報を考慮して、指定されたユーザー名とパスワードを使用してデータベースシャードへの接続を取得します。

      シャーディングキーは、構成された ShardingKeyProvider から取得されます。

      次で指定:
      インターフェース DataSourceSEgetConnectionSE 
      オーバーライド:
      クラス DelegatingDataSourcegetConnection 
      パラメーター:
      username - 接続が確立されているデータベースユーザー
      password - ユーザーのパスワード
      戻り値:
      直接シャード接続を表す Connection オブジェクト
      例外:
      SQLExceptionSE - 接続の作成中にエラーが発生した場合
    • createConnectionBuilder

      public ConnectionBuilderSE createConnectionBuilder() throws SQLExceptionSE
      ターゲット DataSource の createConnectionBuilder() メソッドを使用して ConnectionBuilderSE の新しいインスタンスを作成し、構成された ShardingKeyProvider から適切なシャーディングキーを設定します。
      次で指定:
      インターフェース DataSourceSEcreateConnectionBuilder 
      オーバーライド:
      クラス DelegatingDataSourcecreateConnectionBuilder 
      戻り値:
      直接シャード接続のビルダーを表す ConnectionBuilder オブジェクト
      例外:
      SQLExceptionSE - ConnectionBuilder の作成中にエラーが発生した場合