大家好,希望您一切顺利!
I was quite busy since my last blog post. So this post is part of Spring-Session Grails Plugin blog series which will cover JDBC as your datastore.
在此博客文章中,我将说明如何将JDBC用作会话存储。 要将JDBC用作数据存储,您需要在数据库中创建两个表。 Spring Session不使用任何类型的ORM工具。 您需要创建两个表,一个用于会话,另一个用于会话属性,其格式类似于<SESSION TABLE>和<SESSION TABLE>_ATTRIBUTES”。
CREATE TABLE SPRING_SESSION (
SESSION_ID CHAR(36),
CREATION_TIME BIGINT NOT NULL,
LAST_ACCESS_TIME BIGINT NOT NULL,
MAX_INACTIVE_INTERVAL INT NOT NULL,
PRINCIPAL_NAME VARCHAR(100),
CONSTRAINT SPRING_SESSION_PK PRIMARY KEY (SESSION_ID)
);
CREATE INDEX SPRING_SESSION_IX1 ON SPRING_SESSION (LAST_ACCESS_TIME);
CREATE TABLE SPRING_SESSION_ATTRIBUTES (
SESSION_ID CHAR(36),
ATTRIBUTE_NAME VARCHAR(200),
ATTRIBUTE_BYTES BYTEA,
CONSTRAINT SPRING_SESSION_ATTRIBUTES_PK PRIMARY KEY (SESSION_ID, ATTRIBUTE_NAME),
CONSTRAINT SPRING_SESSION_ATTRIBUTES_FK FOREIGN KEY (SESSION_ID) REFERENCES SPRING_SESSION(SESSION_ID) ON DELETE CASCADE
);
CREATE INDEX SPRING_SESSION_ATTRIBUTES_IX1 ON SPRING_SESSION_ATTRIBUTES (SESSION_ID);
要更改数据存储区,您需要在配置槽。
springsession.sessionStore=SessionStore.JDBC
这会将JDBC设置为您的数据存储。 默认情况下,它将尝试连接H2数据库。 我们来看看一些配置属性及其默认值。
注意:Someofthecommonpropertiesexplainedinpart1。ThosewillworkthesameforJDBCdatastore。
springsession.jdbc.driverClassName="org.h2.Driver" // Driver class default is H2 driver
springsession.jdbc.url="jdbc:h2:~/test" // JDBC Connection string
springsession.jdbc.username="" // JDBC username. Default is "".
springsession.jdbc.password="" // JDBC password. Default is "".
springsession.jdbc.tableName="SessionData" // table name to store sessions
springsession.jdbc.pool.maxActive=10 // Connection pool max active
springsession.jdbc.pool.maxTotal=20 // Connection pool max total
springsession.jdbc.pool.minIdle=3 // Connection pool min idle
springsession.jdbc.pool.maxWaitMillis=10000 // Connection wait time
springsession.jdbc.pool.defaultAutoCommit=true // autocommit true by default
springsession.jdbc.pool.defaultReadOnly=false // read only sessions
springsession.jdbc.pool.defaultTransactionIsolation=Connection.TRANSACTION_READ_COMMITTED // transaction isolation
springsession.jdbc.pool.validationQuery="SELECT 1" // Validate connection query
By default, it uses Java serialization. To use JSON Serialization please visit first blog of this series. First 2 steps will be same but in 3rd step Register my module class with spring-session plugin you will have to use JDBC specific jackson.modules
property.
springsession.jdbc.jackson.modules = ['demo.SimpleModule']