JDBC mit einer PostgreSQL-Dialekt-Datenbank verbinden

Sie können sowohl den PostgreSQL-JDBC-Treiber als auch den Spanner-JDBC-Treiber mit einer Spanner-PostgreSQL-Dialektdatenbank verwenden. Auf dieser Seite wird erläutert, wie Sie mit einem dieser Treiber eine Verbindung zu Ihrer Datenbank herstellen.

PostgreSQL-JDBC-Treiber

In diesem Abschnitt wird erläutert, wie Sie den PostgreSQL-JDBC-Treiber mit einer PostgreSQL-Dialekt-Datenbank in Spanner verbinden. JDBC ist der Java-Standardtreiber für PostgreSQL.

Wenn Sie den PostgreSQL JDBC-Treiber verwenden, muss für die Übersetzung zwischen dem PostgreSQL-Netzwerkprotokoll und dem Spanner-Netzwerkprotokoll PGAdapter verwendet werden. Sie können PGAdapter als Abhängigkeit hinzufügen und parallel mit Ihrer Anwendung ausführen.

1. Fügen Sie PGAdapter und den PostgreSQL-JDBC-Treiber als Abhängigkeiten in Ihre Anwendung ein.

<dependency>
  <groupId>org.postgresql</groupId>
  <artifactId>postgresql</artifactId>
  <version>0.32.0</version>
</dependency>
<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-spanner-pgadapter</artifactId>
  <version>0.32.0</version>
</dependency>

2. Starten Sie den PGAdapter parallel mit Ihrer Anwendung.

OptionsMetadata.Builder builder =
    OptionsMetadata.newBuilder()
        .setProject("my-project")
        .setInstance("my-instance")
        // Set the port to 0 to use a dynamically assigned port.
        .setPort(5432);
ProxyServer server = new ProxyServer(builder.build());
server.startServer();
server.awaitRunning();
      

3. Geben Sie im JDBC-Verbindungsstring localhost und 5432 als Datenbankserverhost und Port an.

// Make sure the PG JDBC driver is loaded.
Class.forName("org.postgresql.Driver");

// Replace localhost and 5432 with the host and port number where PGAdapter is running.
try (Connection connection =
    DriverManager.getConnection("jdbc:postgresql://localhost:5432/my-database")) {
  try (ResultSet resultSet =
      connection.createStatement().executeQuery("select 'Hello world!' as hello")) {
    while (resultSet.next()) {
      System.out.printf(
        "Greeting from Cloud Spanner PostgreSQL: %s\n", resultSet.getString(1));
    }
  }
}
      

Das GitHub-Repository für PGAdapter enthält eine funktionierende Beispielanwendung.

Spanner-JDBC-Treiber

In diesem Abschnitt wird erläutert, wie Sie mit dem Spanner-JDBC-Treiber eine Verbindung zu einer PostgreSQL-Dialekt-Datenbankdatenbank herstellen.

1. Fügen Sie der Anwendung den Spanner-JDBC-Treiber als Abhängigkeit hinzu.

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>libraries-bom</artifactId>
      <version>26.37.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-spanner-jdbc</artifactId>
  </dependency>

2. Verwenden Sie eine Spanner-JDBC-Verbindungs-URL, um eine Verbindung zur PostgreSQL-Dialekt-Datenbank herzustellen.

try (Connection connection = DriverManager.getConnection(
    "jdbc:cloudspanner:/projects/my-project/instances/my-instance/databases/my-database")) {
  try (ResultSet resultSet =
      connection.createStatement().executeQuery("select 'Hello world!' as hello")) {
    while (resultSet.next()) {
      System.out.printf(
        "Greeting from Cloud Spanner PostgreSQL: %s\n", resultSet.getString(1));
    }
  }
}
        

Der Treiber erkennt automatisch den SQL-Dialekt der angegebenen Datenbank. Ein Dialektparameter in der Verbindungs-URL ist nicht erforderlich.

Nächste Schritte