Das Spring Data Spanner-Modul unterstützt Sie bei der Verwendung von Cloud Spanner in jeder Java Anwendung, die mit dem Spring Framework erstellt wurde.
Wie alle Spring Data-Module bietet Spring Data Spanner ein Spring-basiertes Programmiermodell, das die Konsistenzgarantien und Skalierbarkeit von Cloud Spanner beibehält. Die Funktionen dieses Moduls sind mit Spring Data JPA und Hibernate ORM vergleichbar und haben Anmerkungen für Cloud Spanner. Weitere Informationen zur Verwendung von Spring Data JPA mit Cloud Spanner finden Sie unter Cloud Spanner mit Spring Data JPA integrieren (GoogleSQL-Dialekt).
Wenn Sie bereits mit Spring vertraut sind, kann Ihnen Spring Data Spanner die Arbeit mit Cloud Spanner in Ihrer Anwendung vereinfachen und die Menge der zu schreibenden Codes reduzieren.
Auf dieser Seite wird beschrieben, wie Spring Data Spanner einer Java-Anwendung hinzugefügt wird. Ausführliche Informationen zum Modul finden Sie in der Referenz zu Spring Data Spanner.
Modul installieren
Wenn Sie Maven verwenden, fügen Sie die Stückliste von Spring Cloud GCP
Materialien (BOM)
und Spring Data Spanner zu Ihrer pom.xml Datei hinzu. Diese Abhängigkeiten
stellen die Spring Data Spanner-Komponenten für den Spring
ApplicationContext bereit:
Außerdem müssen Sie ein Dienstkonto erstellen und den Dienstkontoschlüssel zum Authentifizieren bei verwenden Google Cloud.
Weitere Informationen finden Sie in der Anleitung zum Java-Entwicklungsumgebung einrichten. Sie müssen die -Clientbibliothek für Java nicht installieren. Der Spring Boot-Starter installiert sie automatisch. Google Cloud
Modul konfigurieren
In diesem Abschnitt werden einige der am häufigsten verwendeten Konfigurationseinstellungen für Spring Data Spanner beschrieben. Eine vollständige Liste der Einstellungen finden Sie in der Referenzdokumentation.
Instanz und Datenbank angeben
Um die Standardinstanz und -datenbank anzugeben, legen Sie die folgenden Konfigurationsattribute für Ihre Anwendung fest:
| Attribut | Beschreibung |
|---|---|
spring.cloud.gcp.spanner.project-id |
Optional. Die Google Cloud Projekt-ID. Überschreibt den Wert von spring.cloud.gcp.config.project-id. |
spring.cloud.gcp.spanner.instance-id |
Die Cloud Spanner-Instanz-ID. |
spring.cloud.gcp.spanner.database |
Die Datenbank, zu der eine Verbindung hergestellt werden soll. |
Cloud Spanner-Daten modellieren
Mit Spring Data Spanner können Sie einfache alte Java-Objekte (POJOs) verwenden, um die Daten zu modellieren, die Sie in Ihren Cloud Spanner-Tabellen speichern.
Deklarieren Sie für jede Tabelle in der Datenbank eine Entität, die einen Datensatz in dieser Tabelle darstellt. Verwenden Sie Anmerkungen, um die Entität und dazugehörige Attribute einer Tabelle und ihren Spalten zuzuordnen.
Sie können die folgenden Annotationen verwenden, um einfache Beziehungen zwischen Entitäten und Tabellen zu modellieren:
| Entitätsanmerkungen | |
|---|---|
@Column(name = "columnName")
|
Optional. Ordnet das Attribut einer bestimmten Spalte in der Spanner-Tabelle zu und überschreibt dabei die Benennungsstrategie, nach der die Namen automatisch zugeordnet werden.
Wenn Sie dieses Attribut weglassen, ordnet die Standard-Benennungsstrategie für
Spring Data Spanner die Java |
@Embedded |
Gibt an, dass das Attribut ein eingebettetes Objekt ist, das Komponenten eines Primärschlüssels enthalten kann. Wenn das Attribut tatsächlich im Primärschlüssel verwendet wird, müssen Sie auch die Anmerkung |
|
|
Gibt an, dass ein Attribut eine Liste von Zeilen enthält, die verschachtelt mit der aktuellen Zeile sind.
Standardmäßig ruft Spring Data Spanner die verschränkten Zeilen
bei der Instanzerstellung ab. Zum verzögerten Abruf der Zeilen verwenden Sie
Beispiel: Wenn die Entität |
@NotMapped |
Gibt an, dass ein Attribut nicht in der Datenbank gespeichert ist und ignoriert werden soll. |
|
|
Gibt an, dass das Attribut eine Komponente des Primärschlüssels ist und die Position des Attributs innerhalb des Primärschlüssels angibt, beginnend bei 1. Der Standardwert von
Beispiel: |
@Table(name = "TABLE_NAME") |
Die Tabelle, die die Entität modelliert. Jede Instanz der Entität stellt einen Datensatz in der Tabelle dar. Ersetzen Sie
Beispiel: |
Wenn Sie komplexere Beziehungen modellieren müssen, lesen Sie in der Referenz zu Spring Data Spanner die Informationen zu anderen Anmerkungen, die das Modul unterstützt.
Die folgenden Beispiele zeigen eine Möglichkeit, die Tabellen Singers und Albums für Spring Data Spanner zu modellieren:
- Für
Singer-Entitäten enthält das Beispiel das Attributalbumsmit der Anmerkung@Interleaved. Dieses Attribut enthält eine Liste von Alben, die mit der EntitätSingerverschränkt sind. Spring Data Spanner füllt dieses Attribut automatisch aus. - Für
Album-Entitäten enthält das Beispiel das AttributrelatedAlbums, das nicht in Cloud Spanner gespeichert ist.
Daten abfragen und ändern
Zum Abfragen und Ändern von Daten mit Spring Data Spanner können Sie eine
SpannerTemplate-Bean übernehmen, die
SpannerOperations implementiert. SpannerTemplate
bietet Methoden zum Durchführen von SQL-Abfragen und Ändern von Daten
mit DML-Anweisungen (Data Manipulation Language). Sie können diese Bean auch für den Zugriff auf die Read API und die Mutation
API für Cloud Spanner verwenden.
Darüber hinaus können Sie die
SpannerRepository-Oberfläche zur Kapselung
der gesamten Anwendungslogik erweitern, die Daten in Cloud Spanner abfragt und ändert.
In den folgenden Abschnitten wird die Verwendung von SpannerTemplate und SpannerRepository erläutert.
Vorlagen-Bean übernehmen
Mit der Anmerkung @Autowired können Sie eine SpannerTemplate-Bean automatisch übernehmen. Anschließend können Sie SpannerTemplate in der gesamten Klasse verwenden.
Das folgende Beispiel zeigt eine Klasse, die die Bean übernimmt und verwendet:
Sie können die SpannerTemplate-Bean verwenden, um schreibgeschützte
Transaktionen und Lese-Schreib
Transaktionen auszuführen. Außerdem können Sie die
@Transactional Anmerkung verwenden, um deklarative
Transaktionen zu erstellen.
Repository-Bean übernehmen
Bei Verwendung eines SpannerRepository können Sie die Anmerkung @Autowired zur Übernahme einer Bean verwenden, die die Oberfläche Ihres Repositorys implementiert. Ein Repository enthält Methoden zum Ausführen von Java-Funktionen als schreibgeschützte Transaktionen und Lese-Schreib-Transaktionen. Für untergeordnete Vorgänge können Sie die vom Repository verwendete Vorlagen-Bean abrufen.
Die folgenden Beispiele zeigen die Oberfläche für ein Repository und eine Klasse, die die Bean übernimmt und verwendet:
Cloud Spanner verwalten
Um Informationen zu Ihren Cloud Spanner-Datenbanken abzurufen, ein Schema mit einer Datendefinitionssprache (DDL)-Anweisung zu aktualisieren oder andere Verwaltungsaufgaben auszuführen, können Sie eine SpannerDatabaseAdminTemplate Bean übernehmen.
Mit der Anmerkung @Autowired können Sie eine -Bean automatisch übernehmen. Anschließend können Sie die SpannerDatabaseAdminTemplate in der gesamten Klasse verwenden.
Das folgende Beispiel zeigt eine Klasse, die die Bean übernimmt und verwendet:
Nächste Schritte
- Erste Schritte mit Spring Cloud GCP.
- Weitere Informationen zur Verwendung von Spring Data Spanner in Ihren Anwendungen.
- Ein GitHub-Problem senden um einen Fehler zu melden oder eine Frage zu dem Modul zu stellen.
- Weitere Informationen zum Spring Framework-Support in Google Cloud.
- Ein Code-Lab ausprobieren, um eine Anwendung bereitzustellen und auszuführen, die Spring Cloud GCP verwendet.