クラス JdbcIndexedSessionRepository

java.lang.ObjectSE
org.springframework.session.jdbc.JdbcIndexedSessionRepository
実装されたすべてのインターフェース:
org.springframework.beans.factory.DisposableBeanorg.springframework.beans.factory.InitializingBeanFindByIndexNameSessionRepository<org.springframework.session.jdbc.JdbcIndexedSessionRepository.JdbcSession>SessionRepository<org.springframework.session.jdbc.JdbcIndexedSessionRepository.JdbcSession>

public class JdbcIndexedSessionRepository extends ObjectSE implements FindByIndexNameSessionRepository<org.springframework.session.jdbc.JdbcIndexedSessionRepository.JdbcSession>, org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.DisposableBean
Spring の JdbcOperations を使用してセッションをリレーショナルデータベースに格納する SessionRepository 実装。この実装は、セッションイベントの公開をサポートしていません。

新しいインスタンスを作成する方法の例を以下に示します。

 JdbcTemplate jdbcTemplate = new JdbcTemplate();

 // ... configure jdbcTemplate ...

 TransactionTemplate transactionTemplate = new TransactionTemplate();

 // ... configure transactionTemplate ...

 JdbcIndexedSessionRepository sessionRepository =
         new JdbcIndexedSessionRepository(jdbcTemplate, transactionTemplate);
 
JdbcTemplate および TransactionTemplate を作成および構成する方法の詳細については、 Spring Framework リファレンスドキュメントを参照してください。

デフォルトでは、この実装は SPRING_SESSION テーブルと SPRING_SESSION_ATTRIBUTES テーブルを使用してセッションを格納します。テーブル名は、setTableName(String) メソッドを使用してカスタマイズできることに注意してください。その場合、属性の格納に使用されるテーブルには、提供されたテーブル名を使用して名前が付けられ、接尾辞は _ATTRIBUTES になります。データベースに応じて、テーブル定義は次のように説明できます。

 CREATE TABLE SPRING_SESSION (
   PRIMARY_ID CHAR(36) NOT NULL,
   SESSION_ID CHAR(36) NOT NULL,
   CREATION_TIME BIGINT NOT NULL,
   LAST_ACCESS_TIME BIGINT NOT NULL,
   MAX_INACTIVE_INTERVAL INT NOT NULL,
   EXPIRY_TIME BIGINT NOT NULL,
   PRINCIPAL_NAME VARCHAR(100),
   CONSTRAINT SPRING_SESSION_PK PRIMARY KEY (PRIMARY_ID)
 );

 CREATE UNIQUE INDEX SPRING_SESSION_IX1 ON SPRING_SESSION (SESSION_ID);
 CREATE INDEX SPRING_SESSION_IX2 ON SPRING_SESSION (EXPIRY_TIME);
 CREATE INDEX SPRING_SESSION_IX3 ON SPRING_SESSION (PRINCIPAL_NAME);

 CREATE TABLE SPRING_SESSION_ATTRIBUTES (
  SESSION_PRIMARY_ID CHAR(36) NOT NULL,
  ATTRIBUTE_NAME VARCHAR(200) NOT NULL,
  ATTRIBUTE_BYTES BYTEA NOT NULL,
  CONSTRAINT SPRING_SESSION_ATTRIBUTES_PK PRIMARY KEY (SESSION_PRIMARY_ID, ATTRIBUTE_NAME),
  CONSTRAINT SPRING_SESSION_ATTRIBUTES_FK FOREIGN KEY (SESSION_PRIMARY_ID) REFERENCES SPRING_SESSION(PRIMARY_ID) ON DELETE CASCADE
 );

 CREATE INDEX SPRING_SESSION_ATTRIBUTES_IX1 ON SPRING_SESSION_ATTRIBUTES (SESSION_PRIMARY_ID);
 
さまざまなデータベースベンダー間の違いのため、特にバイナリデータの保存に関しては、データベースに固有の SQL スクリプトを使用してください。ほとんどの主要なデータベースベンダーのスクリプトは、org/springframework/session/jdbc/schema-*.sql としてパッケージ化されています。ここで、* はターゲットデータベース型です。
導入:
2.2.0
  • フィールドの詳細

    • DEFAULT_TABLE_NAME

      public static final StringSE DEFAULT_TABLE_NAME
      Spring Session がセッションを保管するために使用するデータベース表のデフォルト名。
      関連事項:
    • DEFAULT_CLEANUP_CRON

      public static final StringSE DEFAULT_CLEANUP_CRON
      期限切れのセッションのクリーンアップジョブに使用されるデフォルトの cron 式。
      関連事項:
  • コンストラクターの詳細

    • JdbcIndexedSessionRepository

      public JdbcIndexedSessionRepository(org.springframework.jdbc.core.JdbcOperations jdbcOperations, org.springframework.transaction.support.TransactionOperations transactionOperations)
      提供された JdbcOperations および TransactionOperations を使用してセッションを管理する新しい JdbcIndexedSessionRepository インスタンスを作成します。
      パラメーター:
      jdbcOperations - 使用する JdbcOperations 
      transactionOperations - 使用する TransactionOperations 
  • メソッドの詳細

    • afterPropertiesSet

      public void afterPropertiesSet()
      次で指定:
      インターフェース org.springframework.beans.factory.InitializingBeanafterPropertiesSet 
    • destroy

      public void destroy()
      次で指定:
      インターフェース org.springframework.beans.factory.DisposableBeandestroy 
    • setTableName

      public void setTableName(StringSE tableName)
      セッションの保存に使用するデータベーステーブルの名前を設定します。
      パラメーター:
      tableName - データベーステーブル名
    • setCreateSessionQuery

      public void setCreateSessionQuery(StringSE createSessionQuery)
      セッションの作成に使用するカスタム SQL クエリを設定します。
      パラメーター:
      createSessionQuery - SQL クエリ文字列
    • setCreateSessionAttributeQuery

      public void setCreateSessionAttributeQuery(StringSE createSessionAttributeQuery)
      セッション属性の作成に使用されるカスタム SQL クエリを設定します。
      パラメーター:
      createSessionAttributeQuery - SQL クエリ文字列
    • setGetSessionQuery

      public void setGetSessionQuery(StringSE getSessionQuery)
      セッションの取得に使用するカスタム SQL クエリを設定します。
      パラメーター:
      getSessionQuery - SQL クエリ文字列
    • setUpdateSessionQuery

      public void setUpdateSessionQuery(StringSE updateSessionQuery)
      セッションの更新に使用するカスタム SQL クエリを設定します。
      パラメーター:
      updateSessionQuery - SQL クエリ文字列
    • setUpdateSessionAttributeQuery

      public void setUpdateSessionAttributeQuery(StringSE updateSessionAttributeQuery)
      セッション属性の更新に使用されるカスタム SQL クエリを設定します。
      パラメーター:
      updateSessionAttributeQuery - SQL クエリ文字列
    • setDeleteSessionAttributeQuery

      public void setDeleteSessionAttributeQuery(StringSE deleteSessionAttributeQuery)
      セッション属性の削除に使用するカスタム SQL クエリを設定します。
      パラメーター:
      deleteSessionAttributeQuery - SQL クエリ文字列
    • setDeleteSessionQuery

      public void setDeleteSessionQuery(StringSE deleteSessionQuery)
      セッションの削除に使用するカスタム SQL クエリを設定します。
      パラメーター:
      deleteSessionQuery - SQL クエリ文字列
    • setListSessionsByPrincipalNameQuery

      public void setListSessionsByPrincipalNameQuery(StringSE listSessionsByPrincipalNameQuery)
      プリンシパル名でセッションを取得するために使用されるカスタム SQL クエリを設定します。
      パラメーター:
      listSessionsByPrincipalNameQuery - SQL クエリ文字列
    • setDeleteSessionsByExpiryTimeQuery

      public void setDeleteSessionsByExpiryTimeQuery(StringSE deleteSessionsByExpiryTimeQuery)
      最終アクセス時刻までにセッションを削除するために使用されるカスタム SQL クエリを設定します。
      パラメーター:
      deleteSessionsByExpiryTimeQuery - SQL クエリ文字列
    • setDefaultMaxInactiveInterval

      public void setDefaultMaxInactiveInterval(DurationSE defaultMaxInactiveInterval)
      新しく作成されたセッションが無効になるまでの、リクエスト間の最大非アクティブ間隔を秒単位で設定します。負の時間は、セッションがタイムアウトしないことを示します。デフォルトは 30 分です。
      パラメーター:
      defaultMaxInactiveInterval - デフォルトの maxInactiveInterval
    • setDefaultMaxInactiveInterval

      @DeprecatedSE(since="3.0.0") public void setDefaultMaxInactiveInterval(IntegerSE defaultMaxInactiveInterval)
      使用すべきではありません。
      3.0.0 以降、setDefaultMaxInactiveInterval(Duration) を推奨
      新しく作成されたセッションが無効になるまでの、リクエスト間の最大非アクティブ間隔を秒単位で設定します。負の時間は、セッションがタイムアウトしないことを示します。デフォルトは 1800 (30 分です)。
      パラメーター:
      defaultMaxInactiveInterval - 秒単位のデフォルトの maxInactiveInterval
    • setIndexResolver

      public void setIndexResolver(IndexResolver<Session> indexResolver)
      使用する IndexResolver を設定します。
      パラメーター:
      indexResolver - インデックスリゾルバー
    • setLobHandler

      public void setLobHandler(org.springframework.jdbc.support.lob.LobHandler lobHandler)
    • setConversionService

      public void setConversionService(org.springframework.core.convert.ConversionService conversionService)
      使用する ConversionService を設定します。
      パラメーター:
      conversionService - 設定するコンバーター
    • setFlushMode

      public void setFlushMode(FlushMode flushMode)
      フラッシュモードを設定します。デフォルトは FlushMode.ON_SAVE です。
      パラメーター:
      flushMode - フラッシュモード
    • setSaveMode

      public void setSaveMode(SaveMode saveMode)
      保存モードを設定します。
      パラメーター:
      saveMode - 保存モード
    • setCleanupCron

      public void setCleanupCron(StringSE cleanupCron)
      クリーンアップ cron 式を設定します。
      パラメーター:
      cleanupCron - クリーンアップ cron 式
      導入:
      3.0.0
      関連事項:
      • CronExpression
      • Scheduled.CRON_DISABLED
    • createSession

      public org.springframework.session.jdbc.JdbcIndexedSessionRepository.JdbcSession createSession()
      インターフェースからコピーされた説明: SessionRepository
      この SessionRepository によって永続化できる新しい Session を作成します。

      これにより、Session の永続化方法の最適化とカスタマイズが可能になります。例: 返された実装は変更を追跡し、保存時にデルタのみを永続化する必要があることを保証する場合があります。

      次で指定:
      インターフェース SessionRepository<org.springframework.session.jdbc.JdbcIndexedSessionRepository.JdbcSession>createSession 
      戻り値:
      この SessionRepository によって永続化できる新しい Session
    • save

      public void save(org.springframework.session.jdbc.JdbcIndexedSessionRepository.JdbcSession session)
      インターフェースからコピーされた説明: SessionRepository
      SessionRepository.createSession() によって作成された Session が確実に保存されます。

      一部の実装では、変更を即座に保持する Session を返すことにより、Session が更新されたときに保存することを選択する場合があります。この場合、このメソッドは実際には何も実行しない可能性があります。

      次で指定:
      インターフェース SessionRepository<org.springframework.session.jdbc.JdbcIndexedSessionRepository.JdbcSession>save 
      パラメーター:
      session - 保存する Session
    • findById

      public org.springframework.session.jdbc.JdbcIndexedSessionRepository.JdbcSession findById(StringSE id)
      インターフェースからコピーされた説明: SessionRepository
      Session.getId() によって Session を取得するか、Session が見つからない場合は null を取得します。
      次で指定:
      インターフェース SessionRepository<org.springframework.session.jdbc.JdbcIndexedSessionRepository.JdbcSession>findById 
      パラメーター:
      id - ルックアップする Session.getId()
      戻り値:
      Session.getId() による Session、または Session が見つからない場合は null。
    • deleteById

      public void deleteById(StringSE id)
      インターフェースからコピーされた説明: SessionRepository
      指定された Session.getId()Session を削除するか、Session が見つからない場合は何もしません。
      次で指定:
      インターフェース SessionRepository<org.springframework.session.jdbc.JdbcIndexedSessionRepository.JdbcSession>deleteById 
      パラメーター:
      id - 削除する Session.getId()
    • findByIndexNameAndIndexValue

      public MapSE<StringSE,org.springframework.session.jdbc.JdbcIndexedSessionRepository.JdbcSession> findByIndexNameAndIndexValue(StringSE indexName, StringSE indexValue)
      インターフェースからコピーされた説明: FindByIndexNameSessionRepository
      指定されたインデックス名インデックス値を含むすべてのセッションの Session に対するセッション ID の MapSE を検索します。
      次で指定:
      インターフェース FindByIndexNameSessionRepository<org.springframework.session.jdbc.JdbcIndexedSessionRepository.JdbcSession>findByIndexNameAndIndexValue 
      パラメーター:
      indexName - インデックスの名前 (i.e. FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME )
      indexValue - 検索するインデックスの値。
      戻り値:
      指定されたインデックス名とインデックス値を含むすべてのセッションの Session へのセッション ID の Map (非 null)。結果が見つからない場合は、空の Map が返されます。
    • cleanUpExpiredSessions

      public void cleanUpExpiredSessions()
    • setSessionIdGenerator

      public void setSessionIdGenerator(SessionIdGenerator sessionIdGenerator)
      セッション ID の生成に使用する SessionIdGenerator を設定します。
      パラメーター:
      sessionIdGenerator - 使用する SessionIdGenerator
      導入:
      3.2