Interface Session
- All Superinterfaces:
AutoCloseable
,DatabaseClient
Session
can be used to perform transactions that read and/or modify data in a Cloud
Spanner database.
Sessions can only execute one transaction at a time. To execute multiple concurrent read-write/write-only transactions, create multiple sessions. Note that standalone reads and queries use a transaction internally, and count toward the one transaction limit.
It is a good idea to delete idle and/or unneeded sessions. Aside from explicit deletes, Cloud
Spanner can delete sessions for which no operations are sent for more than an hour, or due to
internal errors. If a session is deleted, requests to it return ErrorCode.NOT_FOUND
.
Idle sessions can be kept alive by sending a trivial SQL query periodically, for example,
SELECT 1
.
Sessions are long-lived objects intended to be reused for many consecutive operations; a typical application will maintain a pool of sessions to use during its lifetime.
Since only one transaction can be performed at a time within any given session, instances
require external synchronization; Session
implementations are not required to be
thread-safe.
-
Method Summary
Methods inherited from interface com.google.cloud.spanner.DatabaseClient
batchWriteAtLeastOnce, executePartitionedUpdate, getDatabaseRole, getDialect, readOnlyTransaction, readOnlyTransaction, readWriteTransaction, runAsync, singleUse, singleUse, singleUseReadOnlyTransaction, singleUseReadOnlyTransaction, transactionManager, transactionManagerAsync, write, writeAtLeastOnce, writeAtLeastOnceWithOptions, writeWithOptions
-
Method Details
-
getName
String getName()Returns the resource name associated with this session. -
close
void close()- Specified by:
close
in interfaceAutoCloseable
-
asyncClose
com.google.api.core.ApiFuture<com.google.protobuf.Empty> asyncClose()Closes the session asynchronously and returns theApiFuture
that can be used to monitor the operation progress.
-