クラス JdbcIndexedSessionRepository
java.lang.ObjectSE
org.springframework.session.jdbc.JdbcIndexedSessionRepository
- 実装されたすべてのインターフェース:
org.springframework.beans.factory.DisposableBean
、org.springframework.beans.factory.InitializingBean
、FindByIndexNameSessionRepository<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
フィールドサマリー
修飾子と型フィールド説明static final StringSE
期限切れのセッションのクリーンアップジョブに使用されるデフォルトの cron 式。static final StringSE
Spring Session がセッションを保管するために使用するデータベース表のデフォルト名。インターフェース org.springframework.session.FindByIndexNameSessionRepository から継承されたフィールド
PRINCIPAL_NAME_INDEX_NAME
コンストラクターのサマリー
コンストラクター説明JdbcIndexedSessionRepository
(org.springframework.jdbc.core.JdbcOperations jdbcOperations, org.springframework.transaction.support.TransactionOperations transactionOperations) 提供されたJdbcOperations
およびTransactionOperations
を使用してセッションを管理する新しいJdbcIndexedSessionRepository
インスタンスを作成します。メソッドのサマリー
修飾子と型メソッド説明void
void
org.springframework.session.jdbc.JdbcIndexedSessionRepository.JdbcSession
このSessionRepository
によって永続化できる新しいSession
を作成します。void
deleteById
(StringSE id) void
destroy()
org.springframework.session.jdbc.JdbcIndexedSessionRepository.JdbcSession
findByIndexNameAndIndexValue
(StringSE indexName, StringSE indexValue) void
save
(org.springframework.session.jdbc.JdbcIndexedSessionRepository.JdbcSession session) SessionRepository.createSession()
によって作成されたSession
が確実に保存されます。void
setCleanupCron
(StringSE cleanupCron) クリーンアップ cron 式を設定します。void
setConversionService
(org.springframework.core.convert.ConversionService conversionService) 使用するConversionService
を設定します。void
setCreateSessionAttributeQuery
(StringSE createSessionAttributeQuery) セッション属性の作成に使用されるカスタム SQL クエリを設定します。void
setCreateSessionQuery
(StringSE createSessionQuery) セッションの作成に使用するカスタム SQL クエリを設定します。void
setDefaultMaxInactiveInterval
(IntegerSE defaultMaxInactiveInterval) 使用すべきではありません。void
setDefaultMaxInactiveInterval
(DurationSE defaultMaxInactiveInterval) 新しく作成されたセッションが無効になるまでのリクエスト間の最大非アクティブ間隔を秒単位で設定します。void
setDeleteSessionAttributeQuery
(StringSE deleteSessionAttributeQuery) セッション属性の削除に使用するカスタム SQL クエリを設定します。void
setDeleteSessionQuery
(StringSE deleteSessionQuery) セッションの削除に使用するカスタム SQL クエリを設定します。void
setDeleteSessionsByExpiryTimeQuery
(StringSE deleteSessionsByExpiryTimeQuery) 最終アクセス時刻までにセッションを削除するために使用されるカスタム SQL クエリを設定します。void
setFlushMode
(FlushMode flushMode) フラッシュモードを設定します。void
setGetSessionQuery
(StringSE getSessionQuery) セッションの取得に使用するカスタム SQL クエリを設定します。void
setIndexResolver
(IndexResolver<Session> indexResolver) 使用するIndexResolver
を設定します。void
setListSessionsByPrincipalNameQuery
(StringSE listSessionsByPrincipalNameQuery) プリンシパル名でセッションを取得するために使用されるカスタム SQL クエリを設定します。void
setLobHandler
(org.springframework.jdbc.support.lob.LobHandler lobHandler) void
setSaveMode
(SaveMode saveMode) 保存モードを設定します。void
setSessionIdGenerator
(SessionIdGenerator sessionIdGenerator) セッション ID の生成に使用するSessionIdGenerator
を設定します。void
setTableName
(StringSE tableName) セッションの保存に使用するデータベーステーブルの名前を設定します。void
setUpdateSessionAttributeQuery
(StringSE updateSessionAttributeQuery) セッション属性の更新に使用されるカスタム SQL クエリを設定します。void
setUpdateSessionQuery
(StringSE updateSessionQuery) セッションの更新に使用するカスタム SQL クエリを設定します。クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
インターフェース org.springframework.session.FindByIndexNameSessionRepository から継承されたメソッド
findByPrincipalName
フィールドの詳細
コンストラクターの詳細
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.InitializingBean
のafterPropertiesSet
destroy
public void destroy()- 次で指定:
- インターフェース
org.springframework.beans.factory.DisposableBean
のdestroy
setTableName
セッションの保存に使用するデータベーステーブルの名前を設定します。- パラメーター:
tableName
- データベーステーブル名
setCreateSessionQuery
セッションの作成に使用するカスタム SQL クエリを設定します。- パラメーター:
createSessionQuery
- SQL クエリ文字列
setCreateSessionAttributeQuery
セッション属性の作成に使用されるカスタム SQL クエリを設定します。- パラメーター:
createSessionAttributeQuery
- SQL クエリ文字列
setGetSessionQuery
セッションの取得に使用するカスタム SQL クエリを設定します。- パラメーター:
getSessionQuery
- SQL クエリ文字列
setUpdateSessionQuery
セッションの更新に使用するカスタム SQL クエリを設定します。- パラメーター:
updateSessionQuery
- SQL クエリ文字列
setUpdateSessionAttributeQuery
セッション属性の更新に使用されるカスタム SQL クエリを設定します。- パラメーター:
updateSessionAttributeQuery
- SQL クエリ文字列
setDeleteSessionAttributeQuery
セッション属性の削除に使用するカスタム SQL クエリを設定します。- パラメーター:
deleteSessionAttributeQuery
- SQL クエリ文字列
setDeleteSessionQuery
セッションの削除に使用するカスタム SQL クエリを設定します。- パラメーター:
deleteSessionQuery
- SQL クエリ文字列
setListSessionsByPrincipalNameQuery
プリンシパル名でセッションを取得するために使用されるカスタム SQL クエリを設定します。- パラメーター:
listSessionsByPrincipalNameQuery
- SQL クエリ文字列
setDeleteSessionsByExpiryTimeQuery
最終アクセス時刻までにセッションを削除するために使用されるカスタム SQL クエリを設定します。- パラメーター:
deleteSessionsByExpiryTimeQuery
- SQL クエリ文字列
setDefaultMaxInactiveInterval
新しく作成されたセッションが無効になるまでの、リクエスト間の最大非アクティブ間隔を秒単位で設定します。負の時間は、セッションがタイムアウトしないことを示します。デフォルトは 30 分です。- パラメーター:
defaultMaxInactiveInterval
- デフォルトの maxInactiveInterval
setDefaultMaxInactiveInterval
@DeprecatedSE(since="3.0.0") public void setDefaultMaxInactiveInterval(IntegerSE defaultMaxInactiveInterval) 使用すべきではありません。3.0.0 以降、setDefaultMaxInactiveInterval(Duration)
を推奨新しく作成されたセッションが無効になるまでの、リクエスト間の最大非アクティブ間隔を秒単位で設定します。負の時間は、セッションがタイムアウトしないことを示します。デフォルトは 1800 (30 分です)。- パラメーター:
defaultMaxInactiveInterval
- デフォルトの maxInactiveInterval(秒単位)
setIndexResolver
使用する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
フラッシュモードを設定します。デフォルトはFlushMode.ON_SAVE
です。- パラメーター:
flushMode
- フラッシュモード
setSaveMode
保存モードを設定します。- パラメーター:
saveMode
- 保存モード
setCleanupCron
クリーンアップ 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
- 次で指定:
- インターフェース
SessionRepository<org.springframework.session.jdbc.JdbcIndexedSessionRepository.JdbcSession>
のfindById
- パラメーター:
id
- ルックアップするSession.getId()
- 戻り値:
Session.getId()
によるSession
、またはSession
が見つからない場合は null。
deleteById
インターフェースからコピーされた説明:SessionRepository
- 次で指定:
- インターフェース
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
- 次で指定:
- インターフェース
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
セッション ID の生成に使用するSessionIdGenerator
を設定します。- パラメーター:
sessionIdGenerator
- 使用するSessionIdGenerator
- 導入:
- 3.2
setDefaultMaxInactiveInterval(Duration)
を推奨