本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
適用於 Java 的亞馬遜 QLDB 驅動程序 — 快速入門教程
在此教學中,您將學習如何使用適用於 Java 的 Amazon QLDB 驅動程式,設定簡單的應用程式。本指南包含安裝驅動程式的步驟,以及基本的建立、讀取、更新和刪除 (CRUD) 操作。如需在完整範例應用程式中示範這些作業的更深入範例,請參閱Java 教學.
主題
先決條件
開始使用之前,請確認執行下列作:開始使用之前,請確認執
-
完成先決條件 Java 驅動程式 (如果您尚未完成)。這包括註冊AWS、授予程式設計存取以供開發,以及安裝 Java 整合式開發環境 (IDE)。
-
建立名為的分類帳
quick-start
。若要瞭解如何建立分類帳,請參閱Amazon QLDB 分類帳的基本操作或步驟 1:建立新的分類帳在「開始使用主控台」中的。
步驟 1:設定您的 專案
首先,設定您的 Java 專案。我們建議使用 Maven
注意
如果您使用的 IDE 具有自動化這些設定步驟的功能,您可以跳到步驟 2:初始化驅動程式初始。
-
建立您的應用程式資料夾。
$
mkdir myproject
$
cd myproject
-
輸入下列命令以從 Maven 範本初始化您的專案。視需要將
專案
和套件
、專案名稱Maven 樣板
取代為您自己的值。$
mvn archetype:generate -DgroupId=
project-package
\ -DartifactId=project-name
\ -DarchetypeArtifactId=maven-template
\ -DinteractiveMode=false對於
製作模板
,您可以使用基本的 Maven 模板:maven-archetype-quickstart
-
若要將 Java 的 QLDB 驅動程式
新增為專案相依性,請瀏覽至新建立的 pom.xml
檔案並新增下列成品。<dependency> <groupId>software.amazon.qldb</groupId> <artifactId>amazon-qldb-driver-java</artifactId> <version>2.3.1</version> </dependency>
此成品會自動包含AWS SDK for Java 2.x
核心模組、Amazon Ion 程式庫和其他必要的相依性。您的 pom.xml
檔案內容看起來如下內容看起來如下內容。<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>
-
開啟
App.java
檔案。然後,在以下步驟中逐步添加代碼示例,以嘗試一些基本的 CRUD 操作。或者,您可以略過 step-by-step 教學課程,而是執行完整的應用程式。
步驟 2:初始化驅動程式初始
初始化連線至名為之分類帳的驅動程式執行個體quick-start
。將下列程式碼新增至App.java
檔案︰將下列程式
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(); } }
步驟 3:建立資料表和索引:建立資料表和
下列程式碼範例示範如何執行CREATE TABLE
和CREATE
INDEX
陳述式。
在main
方法中,添加以下代碼,該代碼創建一個名為的表People
和該表上的lastName
字段的索引。需要索引來最佳化查詢效能,並協助限制最佳化並行控制 (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)"); });
步驟 4:插入文件:插入文件
下列程式碼範例示範如何執行INSERT
陳述式。QLDB 支援 PartiQL 查詢語言 (SQL 相容) 和亞馬遜離子資料格式 (JSON 的超集)。
添加以下插入文檔到People
表中的代碼。
// 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); });
此範例使用問號 (?
) 做為變數預留位置,將文件資訊傳遞至陳述式。當您使用預留位置時,必須傳遞 type 的值IonValue
。
提示
步驟 5:查詢文件查詢文件查
下列程式碼範例示範如何執行SELECT
陳述式。
添加以下代碼查詢從People
表中的文檔。
// 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 });
步驟 6:更新文件更新文件更
下列程式碼範例示範如何執行UPDATE
陳述式。
-
添加以下代碼,通過更新
age
到更新People
表中的文檔42
。// 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 32 });
-
使用 Maven 或您的 IDE 來編譯和運行該
App.java
文件。
執行完整的應用程式
下列程式碼範例是應App.java
用程式的完整版本。您也可以從頭到尾複製並執行此程式碼範例,而不是個別執行前述步驟。此應用程序演示了名為分類帳的一些基本 CRUD 操作quick-start
。
注意
在執行此程式碼之前,請確定您尚未在quick-start
分類帳People
中命名為使用中的資料表。
在第一行中,將專案套件
取代為中用於 Maven 命令的groupId
值步驟 1:設定您的 專案。
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 }); } }
使用 Maven 或您的 IDE 來編譯和運行該App.java
文件。