- 6.95.1 (latest)
- 6.94.0
- 6.93.0
- 6.89.0
- 6.88.0
- 6.87.0
- 6.86.0
- 6.85.0
- 6.83.0
- 6.82.0
- 6.80.1
- 6.79.0
- 6.77.0
- 6.74.1
- 6.72.0
- 6.71.0
- 6.69.0
- 6.68.0
- 6.66.0
- 6.65.1
- 6.62.0
- 6.60.0
- 6.58.0
- 6.57.0
- 6.56.0
- 6.55.0
- 6.54.0
- 6.53.0
- 6.52.1
- 6.51.0
- 6.50.1
- 6.49.0
- 6.25.1
- 6.24.0
- 6.23.4
- 6.22.0
- 6.21.2
- 6.20.0
- 6.19.1
- 6.18.0
- 6.17.4
- 6.14.1
public interface Session extends DatabaseClient, AutoCloseable
A 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.
Cloud Spanner limits the number of sessions that can exist at any given time; thus, 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.
Methods
asyncClose()
public abstract ApiFuture<Empty> asyncClose()
Closes the session asynchronously and returns the ApiFuture that can be used to monitor the operation progress.
Type | Description |
ApiFuture<Empty> |
close()
public abstract void close()
getName()
public abstract String getName()
Returns the resource name associated with this session.
Type | Description |
String |
prepareReadWriteTransaction()
public abstract void prepareReadWriteTransaction()
Prepares a transaction for use by a subsequent #readWriteTransaction() or #write(Iterable) call. It is not necessary to call this method before running a transaction or performing a write, but doing so may allow one round trip of the protocol to be performed in advance; calling this method on an idle session that is expected to execute a transaction or write in the near future may reduce the latency of the subsequent transaction/write.