Il modulo Spring Data Spanner ti aiuta a utilizzare Spanner in qualsiasi applicazione Java creata con lo Spring Framework.
Come tutti i moduli Spring Data, Spring Data Spanner fornisce un modello di programmazione basato su Spring che mantiene le garanzie di coerenza e la scalabilità di Spanner. Le sue funzionalità sono simili a Spring Data JPA e Hibernate ORM, con annotazioni progettate per Spanner. Per saperne di più su come utilizzare Spring Data JPA con Spanner, consulta Integrare Spanner con Spring Data JPA (dialetto GoogleSQL).
Se hai già familiarità con Spring, Spring Data Spanner può semplificare l'utilizzo di Spanner nella tua applicazione e ridurre la quantità di codice che devi scrivere.
Questa pagina spiega come aggiungere Spring Data Spanner a un'applicazione Java. Per informazioni dettagliate sul modulo, consulta il riferimento di Spring Data Spanner.
Installare il modulo
Se utilizzi Maven, aggiungi la distinta base (BOM) di Spring Cloud GCP
e Spring Data Spanner al file pom.xml. Queste dipendenze
forniscono i componenti Spring Data Spanner al tuo Spring
ApplicationContext:
Devi anche creare un account di servizio e utilizzare la chiave dell'account di servizio per l'autenticazione Google Cloud.
Per saperne di più, consulta le istruzioni per la configurazione di un ambiente di sviluppo Java. Non è necessario installare la Google Cloud libreria client per Java; lo starter di Spring Boot installa automaticamente la libreria client.
Configurare il modulo
Questa sezione descrive alcune delle impostazioni di configurazione più utilizzate per Spring Data Spanner. Per un elenco completo delle impostazioni, consulta la documentazione di riferimento.
Specificare un'istanza e un database
Per specificare l'istanza e il database predefiniti, imposta le seguenti proprietà di configurazione per l'applicazione:
| Proprietà | Descrizione |
|---|---|
spring.cloud.gcp.spanner.project-id |
Facoltativo. L'ID progetto Google Cloud . Esegue l'override del valore di spring.cloud.gcp.config.project-id. |
spring.cloud.gcp.spanner.instance-id |
L'ID istanza Spanner. |
spring.cloud.gcp.spanner.database |
Il database a cui connettersi. |
Modellare i dati di Spanner
Con Spring Data Spanner, puoi utilizzare oggetti Java semplici (POJO) per modellare i dati archiviati nelle tabelle Spanner.
Per ogni tabella del database, dichiara un'entità che rappresenta un record in quella tabella. Utilizza le annotazioni per mappare l'entità e le relative proprietà a una tabella e alle relative colonne.
Puoi utilizzare le seguenti annotazioni per modellare le relazioni semplici tra entità e tabelle:
| Annotazioni delle entità | |
|---|---|
@Column(name = "columnName")
|
Facoltativo. Mappa la proprietà a una colonna specifica nella tabella Spanner, eseguendo l'override della strategia di denominazione che mappa automaticamente i nomi.
Se ometti questa proprietà, la strategia di denominazione predefinita per
Spring Data Spanner mappa i nomi delle proprietà Java |
@Embedded |
Indica che la proprietà è un oggetto incorporato che può contenere
i componenti di una chiave primaria. Se la proprietà viene effettivamente utilizzata nella
chiave primaria, devi includere anche l'annotazione |
|
|
Indica che una proprietà contiene un elenco di righe intercalate con la riga corrente.
Per impostazione predefinita, Spring Data Spanner recupera le righe intercalate
al momento della creazione dell'istanza. Per recuperare le righe in modo lazy, quando accedi alla
proprietà, utilizza
Esempio: se un'entità |
@NotMapped |
Indica che una proprietà non è archiviata nel database e deve essere ignorata. |
|
|
Indica che la proprietà è un componente della chiave primaria e
identifica la posizione della proprietà all'interno della chiave primaria,
a partire da 1. Il valore predefinito di
Esempio: |
@Table(name = "TABLE_NAME") |
La tabella che l'entità modella. Ogni istanza dell'entità
rappresenta un record nella tabella. Sostituisci
Esempio: |
Se devi modellare relazioni più complesse, consulta il riferimento di Spring Data Spanner per i dettagli su altre annotazioni supportate dal modulo.
Gli esempi seguenti mostrano un modo per modellare le tabelle Singers e Albums per Spring Data Spanner:
- Per le entità
Singer, l'esempio include una proprietàalbums, con un'annotazione@Interleaved. Questa proprietà contiene un elenco di album intercalati con l'entitàSinger. Spring Data Spanner popola automaticamente questa proprietà. - Per le entità
Album, l'esempio include una proprietàrelatedAlbumsche non è archiviata in Spanner.
Eseguire query e modificare i dati
Per eseguire query e modificare i dati con Spring Data Spanner, puoi acquisire un
SpannerTemplate bean, che implementa
SpannerOperations. SpannerTemplate
fornisce metodi per eseguire query SQL e modificare i dati
con istruzioni DML (Data Manipulation Language). Puoi utilizzare anche
questo bean per accedere all'API di lettura e all'API di mutazione per Spanner.
Inoltre, puoi estendere l'
SpannerRepository interfaccia per incapsulare
tutta la logica dell'applicazione che esegue query e modifica i dati in Spanner.
Le sezioni seguenti spiegano come utilizzare SpannerTemplate e SpannerRepository.
Acquisire un bean modello
Utilizza l'annotazione @Autowired per acquisire automaticamente un bean SpannerTemplate. Puoi quindi utilizzare SpannerTemplate in tutta la classe.
L'esempio seguente mostra una classe che acquisisce e utilizza il bean:
Puoi utilizzare il SpannerTemplate bean per eseguire transazioni
di sola lettura e transazioni
di lettura/scrittura. Inoltre, puoi utilizzare l'
@Transactional annotazione per creare transazioni dichiarative.
Acquisire un bean repository
Se utilizzi un SpannerRepository, puoi utilizzare l'annotazione @Autowired per acquisire un bean che implementa l'interfaccia del repository. Un repository
include metodi per eseguire funzioni Java come transazioni
di sola lettura e transazioni
di lettura/scrittura. Per le operazioni di livello inferiore, puoi ottenere il bean modello utilizzato dal repository.
Gli esempi seguenti mostrano l'interfaccia per un repository e una classe che acquisisce e utilizza il bean:
Gestire Spanner
Per ottenere informazioni sui database Spanner, aggiornare uno schema con un
istruzione DDL (Data Definition Language) o completare altre attività amministrative
, puoi acquisire un
SpannerDatabaseAdminTemplate
bean.
Utilizza l'annotazione @Autowired per acquisire automaticamente il bean. Puoi quindi utilizzare SpannerDatabaseAdminTemplate in tutta la classe.
L'esempio seguente mostra una classe che acquisisce e utilizza il bean:
Passaggi successivi
- Inizia a utilizzare Spring Cloud GCP.
- Scopri di più sull'utilizzo di Spring Data Spanner nelle tue applicazioni.
- Invia una segnalazione su GitHub per segnalare un bug o porre una domanda sul modulo.
- Scopri di più sul supporto di Spring Framework su Google Cloud.
- Prova un codelab per eseguire il deployment e l'esecuzione di un'applicazione che utilizza Spring Cloud GCP.