【发布时间】:2018-12-30 04:42:19
【问题描述】:
我对 Cloud Spanenr 还是很陌生。我已经了解创建连接(dbClient)并用于事务和executeQuery / mutations的锄头。 但我不清楚如何为 Cloud Spanner 创建 ConnectionPooling 好吧,有 SpannerOptions、Session/SessionPoolOptions。只需创建
SpannerOptions options = SpannerOptions.newBuilder().build();
Spanner spanner = options.getService();
DatabaseClient dbClient = spanner.getDatabaseClient(db);
将处理企业应用程序所需的连接池。
如果我们将连接对象从 Pool 中取出并返回到池中以再次重用,而不是多次创建连接,那么是否有适当的方法来创建 JDBC/Hibernate 样式的连接池。
我已经创建了连接对象并创建了所有类型的事务,其中包含查询和突变以及其他过程。我正在创建一个集中式库来为多个 dao 提供连接(dbClient)。无法获得适当的文档或流程来实现 Cloud Spanner 连接池类的 JDBC/Hibernate 样式
SpannerOptions options = SpannerOptions.newBuilder().build();
Spanner spanner = options.getService();
try {
DatabaseId db = DatabaseId.of(options.getProjectId(),SpannerInstanceId, SpannerDatabaseId);
String clientProject = spanner.getOptions().getProjectId();
if (!db.getInstanceId().getProject().equals(clientProject)) {
System.err.println(
"Invalid project specified. Project in the database id should match"
+ "the project name set in the environment variable GCLOUD_PROJECT. Expected: "
+ clientProject);
}
DatabaseClient dbClient = spanner.getDatabaseClient(db);
dbClient
.readWriteTransaction()
.run(
new TransactionCallable<Void>() {
@Override
public Void run(TransactionContext transaction) throws Exception {
ResultSet resultSet;
目前,当需要连接时,我正在尝试对每个 Dao 方法重复相同的操作。我正在寻找一个集中的类来提供这个连接形式的连接池并将其返回给池以供重新使用。
【问题讨论】:
标签: google-cloud-platform connection-pooling google-cloud-spanner