クラス 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 StringSESpring 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インスタンスを作成します。方法の概要
修飾子と型メソッド説明voidvoidorg.springframework.session.jdbc.JdbcIndexedSessionRepository.JdbcSessionこのSessionRepositoryによって永続化できる新しいSessionを作成します。voiddeleteById(StringSE id) voiddestroy()org.springframework.session.jdbc.JdbcIndexedSessionRepository.JdbcSessionfindByIndexNameAndIndexValue(StringSE indexName, StringSE indexValue) voidsave(org.springframework.session.jdbc.JdbcIndexedSessionRepository.JdbcSession session) SessionRepository.createSession()によって作成されたSessionが確実に保存されます。voidsetCleanupCron(StringSE cleanupCron) クリーンアップ cron 式を設定します。voidsetConversionService(org.springframework.core.convert.ConversionService conversionService) 使用するConversionServiceを設定します。voidsetCreateSessionAttributeQuery(StringSE createSessionAttributeQuery) セッション属性の作成に使用されるカスタム SQL クエリを設定します。voidsetCreateSessionQuery(StringSE createSessionQuery) セッションの作成に使用するカスタム SQL クエリを設定します。voidsetDefaultMaxInactiveInterval(IntegerSE defaultMaxInactiveInterval) 使用すべきではありません。voidsetDefaultMaxInactiveInterval(DurationSE defaultMaxInactiveInterval) 新しく作成されたセッションが無効になるまでのリクエスト間の最大非アクティブ間隔を秒単位で設定します。voidsetDeleteSessionAttributeQuery(StringSE deleteSessionAttributeQuery) セッション属性の削除に使用するカスタム SQL クエリを設定します。voidsetDeleteSessionQuery(StringSE deleteSessionQuery) セッションの削除に使用するカスタム SQL クエリを設定します。voidsetDeleteSessionsByExpiryTimeQuery(StringSE deleteSessionsByExpiryTimeQuery) 最終アクセス時刻までにセッションを削除するために使用されるカスタム SQL クエリを設定します。voidsetFlushMode(FlushMode flushMode) フラッシュモードを設定します。voidsetGetSessionQuery(StringSE getSessionQuery) セッションの取得に使用するカスタム SQL クエリを設定します。voidsetIndexResolver(IndexResolver<Session> indexResolver) 使用するIndexResolverを設定します。voidsetListSessionsByPrincipalNameQuery(StringSE listSessionsByPrincipalNameQuery) プリンシパル名でセッションを取得するために使用されるカスタム SQL クエリを設定します。voidsetLobHandler(org.springframework.jdbc.support.lob.LobHandler lobHandler) voidsetSaveMode(SaveMode saveMode) 保存モードを設定します。voidsetSessionIdGenerator(SessionIdGenerator sessionIdGenerator) セッション ID の生成に使用するSessionIdGeneratorを設定します。voidsetTableName(StringSE tableName) セッションの保存に使用するデータベーステーブルの名前を設定します。voidsetUpdateSessionAttributeQuery(StringSE updateSessionAttributeQuery) セッション属性の更新に使用されるカスタム SQL クエリを設定します。voidsetUpdateSessionQuery(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- 使用するJdbcOperationstransactionOperations- 使用する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
- 関連事項:
CronExpressionScheduled.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) インターフェースからコピーされた説明:SessionRepositorySessionRepository.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)を推奨