Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Amazon QLDB Driver pour Java — Tutoriel de démarrage rapide
Important
Avis de fin de support : les clients existants pourront utiliser Amazon QLDB jusqu'à la fin du support le 31 juillet 2025. Pour plus de détails, consultez Migrer un Amazon QLDB Ledger vers Amazon Aurora SQL Postgre
Dans ce didacticiel, vous apprendrez à configurer une application simple à l'aide de la dernière version du QLDB pilote Amazon pour Java. Ce guide inclut les étapes d'installation du pilote et des exemples de code abrégé des opérations de base de création, de lecture, de mise à jour et de suppression (CRUD). Pour des exemples plus détaillés illustrant ces opérations dans un exemple complet d'application, consultez leTutoriel Java.
Rubriques
Prérequis
Avant de commencer, assurez-vous d'effectuer les opérations suivantes :
-
Complétez le Prérequis pour le pilote Java, si ce n'est déjà fait. Cela inclut l'inscription AWS, l'octroi d'un accès programmatique pour le développement et l'installation d'un environnement de développement intégré Java (IDE).
-
Créez un registre nommé
quick-start
.Pour savoir comment créer un registre, voir Opérations de base pour Amazon QLDB Ledgers ou Étape 1 : Création d'un nouveau registre dans Commencer à utiliser la console.
Étape 1 : Configurer votre projet
Configurez d'abord votre projet Java. Nous vous recommandons d'utiliser le système de gestion des dépendances Maven
Note
Si vous utilisez un IDE logiciel doté de fonctionnalités pour automatiser ces étapes de configuration, vous pouvez passer àÉtape 2 : Initialisation du pilote.
-
Créez un dossier pour votre application.
$
mkdir myproject
$
cd myproject
-
Entrez la commande suivante pour initialiser votre projet à partir d'un modèle Maven. Remplacez
project-package
,project-name
, etmaven-template
avec vos propres valeurs, le cas échéant.$
mvn archetype:generate -DgroupId=
project-package
\ -DartifactId=project-name
\ -DarchetypeArtifactId=maven-template
\ -DinteractiveMode=falseDans
maven-template
, vous pouvez utiliser le modèle Maven de base :maven-archetype-quickstart
-
Pour ajouter le QLDBpilote Java
en tant que dépendance du projet, accédez au pom.xml
fichier que vous venez de créer et ajoutez l'artefact suivant.<dependency> <groupId>software.amazon.qldb</groupId> <artifactId>amazon-qldb-driver-java</artifactId> <version>2.3.1</version> </dependency>
Cet artefact inclut automatiquement le module AWS SDK for Java 2.x
principal, les bibliothèques Amazon Ion et les autres dépendances requises. Votre pom.xml
fichier doit maintenant ressembler à ce qui suit.<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>software.amazon.qldb</groupId> <artifactId>qldb-quickstart</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>qldb-quickstart</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>software.amazon.qldb</groupId> <artifactId>amazon-qldb-driver-java</artifactId> <version>2.3.1</version> </dependency> </dependencies> </project>
-
Ouvrez le fichier
App.java
.Ajoutez ensuite progressivement les exemples de code dans les étapes suivantes pour essayer certaines CRUD opérations de base. Vous pouvez également ignorer le step-by-step didacticiel et exécuter l'application complète à la place.
Étape 2 : Initialisation du pilote
Initialisez une instance du pilote qui se connecte au registre nommé. quick-start
Ajoutez le code suivant à votre App.java
fichier.
import java.util.*; import com.amazon.ion.*; import com.amazon.ion.system.*; import software.amazon.awssdk.services.qldbsession.QldbSessionClient; import software.amazon.qldb.*; public final class App { public static IonSystem ionSys = IonSystemBuilder.standard().build(); public static QldbDriver qldbDriver; public static void main(final String... args) { System.out.println("Initializing the driver"); qldbDriver = QldbDriver.builder() .ledger("quick-start") .transactionRetryPolicy(RetryPolicy .builder() .maxRetries(3) .build()) .sessionClientBuilder(QldbSessionClient.builder()) .build(); } }
Étape 3 : Création d'une table et d'un index
L'exemple de code suivant montre comment exécuter CREATE TABLE
des CREATE
INDEX
instructions.
Dans la main
méthode, ajoutez le code suivant qui crée une table nommée People
et un index pour le lastName
champ de cette table. Les index sont nécessaires pour optimiser les performances des requêtes et aider à limiter les exceptions de conflit optimistes en matière de contrôle de simultanéité (OCC).
// Create a table and an index in the same transaction qldbDriver.execute(txn -> { System.out.println("Creating a table and an index"); txn.execute("CREATE TABLE People"); txn.execute("CREATE INDEX ON People(lastName)"); });
Étape 4 : Insérer un document
L'exemple de code suivant montre comment exécuter une INSERT
instruction. QLDBprend en charge le langage de requête partiQL (SQLcompatible) et le format de données Amazon Ion (surensemble de). JSON
Ajoutez le code suivant qui insère un document dans le People
tableau.
// Insert a document qldbDriver.execute(txn -> { System.out.println("Inserting a document"); IonStruct person = ionSys.newEmptyStruct(); person.put("firstName").newString("John"); person.put("lastName").newString("Doe"); person.put("age").newInt(32); txn.execute("INSERT INTO People ?", person); });
Cet exemple utilise un point d'interrogation (?
) comme espace réservé aux variables pour transmettre les informations du document à l'instruction. Lorsque vous utilisez des espaces réservés, vous devez transmettre une valeur de typeIonValue
.
Astuce
Pour insérer plusieurs documents à l'aide d'une seule INSERT instruction, vous pouvez transmettre un paramètre de type IonList(explicitement converti en tant queIonValue
) à l'instruction comme suit.
// people is an IonList explicitly cast as an IonValue txn.execute("INSERT INTO People ?", (IonValue) people);
Vous ne placez pas la variable placeholder (?
) entre crochets (<<...>>
) lorsque vous passez un. IonList
Dans les instructions partiQL manuelles, les crochets à double angle indiquent une collection non ordonnée appelée sac.
Étape 5 : Interrogez le document
L'exemple de code suivant montre comment exécuter une SELECT
instruction.
Ajoutez le code suivant qui interroge un document à partir de la People
table.
// Query the document qldbDriver.execute(txn -> { System.out.println("Querying the table"); Result result = txn.execute("SELECT * FROM People WHERE lastName = ?", ionSys.newString("Doe")); IonStruct person = (IonStruct) result.iterator().next(); System.out.println(person.get("firstName")); // prints John System.out.println(person.get("lastName")); // prints Doe System.out.println(person.get("age")); // prints 32 });
Étape 6 : Mettre à jour le document
L'exemple de code suivant montre comment exécuter une UPDATE
instruction.
-
Ajoutez le code suivant qui met à jour un document du
People
tableau en le mettant à jourage
vers42
.// Update the document qldbDriver.execute(txn -> { System.out.println("Updating the document"); final List<IonValue> parameters = new ArrayList<>(); parameters.add(ionSys.newInt(42)); parameters.add(ionSys.newString("Doe")); txn.execute("UPDATE People SET age = ? WHERE lastName = ?", parameters); });
-
Interrogez à nouveau le document pour voir la valeur mise à jour.
// Query the updated document qldbDriver.execute(txn -> { System.out.println("Querying the table for the updated document"); Result result = txn.execute("SELECT * FROM People WHERE lastName = ?", ionSys.newString("Doe")); IonStruct person = (IonStruct) result.iterator().next(); System.out.println(person.get("firstName")); // prints John System.out.println(person.get("lastName")); // prints Doe System.out.println(person.get("age")); // prints 32 });
-
Utilisez Maven ou votre IDE pour compiler et exécuter le
App.java
fichier.
Exécution de l'application complète
L'exemple de code suivant représente la version complète de l'App.java
application. Au lieu d'effectuer les étapes précédentes individuellement, vous pouvez également copier et exécuter cet exemple de code du début à la fin. Cette application montre certaines CRUD opérations de base sur le registre nomméquick-start
.
Note
Avant d'exécuter ce code, assurez-vous qu'aucune table active n'est déjà nommée People
dans le quick-start
registre.
Sur la première ligne, remplacez project-package
avec la groupId
valeur que vous avez utilisée pour la commande Maven dansÉtape 1 : Configurer votre projet .
package
project-package
; import java.util.*; import com.amazon.ion.*; import com.amazon.ion.system.*; import software.amazon.awssdk.services.qldbsession.QldbSessionClient; import software.amazon.qldb.*; public class App { public static IonSystem ionSys = IonSystemBuilder.standard().build(); public static QldbDriver qldbDriver; public static void main(final String... args) { System.out.println("Initializing the driver"); qldbDriver = QldbDriver.builder() .ledger("quick-start") .transactionRetryPolicy(RetryPolicy .builder() .maxRetries(3) .build()) .sessionClientBuilder(QldbSessionClient.builder()) .build(); // Create a table and an index in the same transaction qldbDriver.execute(txn -> { System.out.println("Creating a table and an index"); txn.execute("CREATE TABLE People"); txn.execute("CREATE INDEX ON People(lastName)"); }); // Insert a document qldbDriver.execute(txn -> { System.out.println("Inserting a document"); IonStruct person = ionSys.newEmptyStruct(); person.put("firstName").newString("John"); person.put("lastName").newString("Doe"); person.put("age").newInt(32); txn.execute("INSERT INTO People ?", person); }); // Query the document qldbDriver.execute(txn -> { System.out.println("Querying the table"); Result result = txn.execute("SELECT * FROM People WHERE lastName = ?", ionSys.newString("Doe")); IonStruct person = (IonStruct) result.iterator().next(); System.out.println(person.get("firstName")); // prints John System.out.println(person.get("lastName")); // prints Doe System.out.println(person.get("age")); // prints 32 }); // Update the document qldbDriver.execute(txn -> { System.out.println("Updating the document"); final List<IonValue> parameters = new ArrayList<>(); parameters.add(ionSys.newInt(42)); parameters.add(ionSys.newString("Doe")); txn.execute("UPDATE People SET age = ? WHERE lastName = ?", parameters); }); // Query the updated document qldbDriver.execute(txn -> { System.out.println("Querying the table for the updated document"); Result result = txn.execute("SELECT * FROM People WHERE lastName = ?", ionSys.newString("Doe")); IonStruct person = (IonStruct) result.iterator().next(); System.out.println(person.get("firstName")); // prints John System.out.println(person.get("lastName")); // prints Doe System.out.println(person.get("age")); // prints 42 }); } }
Utilisez Maven ou votre IDE pour compiler et exécuter le App.java
fichier.