使用 Java 的PreparedStatement將 JSON 物件插入 PostgreSQL既簡單又高效。這種方法利用了 PostgreSQL 強大的 JSON 功能和 Java 強大的 JDBC API。按照本文概述的步驟,我們可以無縫地將 JSON 資料儲存在我們的 PostgreSQL 資料庫中,並利用其豐富的查詢功能。
在現代軟體開發中,由於 JSON 資料輕量且用途廣泛,因此處理 JSON 資料已變得無處不在。PostgreSQL 對 JSON 具有強大的支援,為儲存和查詢 JSON 資料提供了一個出色的平臺。作為一種流行的程式語言,Java 經常使用 JDBC 與資料庫互動。本文演示如何使用 Java 的PreparedStatement將 JSON 物件插入 PostgreSQL 資料庫。
JSONB 與 JSON 型別
PostgreSQL 提供了兩種儲存 JSON 資料的主要型別:JSONB和JSON。雖然兩種型別都用於儲存和操作 JSON 資料,但它們之間存在一些差異。
JSONB型別提供高效的二進位制儲存和索引功能,從而加快查詢執行速度。它在插入期間執行 JSON 資料的驗證和轉換,從而保留 JSON 物件內鍵的順序。PostgreSQL 可以自動將其他資料型別的值轉換為JSON。
另一方面,JSON型別將 JSON 資料儲存為純文字,沒有二進位制表示或專門的索引。它在插入期間執行驗證,但缺少JSONB的最佳化和鍵順序儲存。使用JSONB型別時,需要顯式強制轉換或轉換才能將值轉換為 JSON 。
在本文中,我們將利用JSONB型別在 PostgreSQL 中儲存和查詢 JSON 資料。
安裝並執行 PostgreSQL
如果未安裝 PostgreSQL,我們可以從PostgreSQL官方網站下載並安裝它。考慮到 PostgreSQL 已經支援 JSON 很長時間了,我們可以從 PostgreSQL 9 開始選擇任何版本。在本文中,我們將使用最新、最穩定的版本,即 PostgreSQL 16。我們需要確保 PostgreSQL 已啟動並執行,並且可以使用必要的憑據訪問。
包含 PostgreSQL JDBC 驅動
將 PostgreSQL JDBC 驅動程式新增到我們專案的依賴項中。對於 Maven 專案,我們需要在pom.xml中指定依賴項:
<dependency> |
包含 JSON 庫依賴
為了在 Java 程式碼中使用 JSON 資料,我們還需要將 JSON 庫作為依賴項包含在內。Java 有幾種流行的 JSON 庫,例如Jackson、Gson和org.json。在本文中,我們將使用org.json庫,它提供了一個簡單而輕量級的 JSON 處理解決方案。為了將org.json庫包含在我們的專案中,我們可以將以下依賴項新增到 Maven 專案的 pom.xml 檔案中:
<dependency> |
現在我們已經有了必要的依賴項,讓我們繼續下一部分,建立表並編寫 Java 程式碼來插入 JSON 資料。
建立帶有 JSON 列的 PostgreSQL 表
首先,我們需要建立一個包含 JSON 列的 PostgreSQL 表。連線到我們之前設定的 PostgreSQL 例項並執行以下 SQL 命令:
CREATE TABLE users ( |
該表有三列:id,name,info。info列為JSONB型別,以二進位制格式儲存 JSON 資料,提供高效的儲存和查詢能力。
編寫 Java 程式碼插入 JSON 資料
現在,讓我們轉到 Java 部分。我們將編寫一個 Java 程式,使用PreparedStatement將 JSON 資料插入到使用者表中。
建立資料庫連線
首先,我們需要建立與 PostgreSQL 資料庫的 JDBC 連線。以下是獲取資料庫連線的方法:
public class InsertJsonData { |
請注意,database_name、username和password需要替換為實際的 PostgreSQL 資料庫名稱、使用者名稱和密碼。
插入 JSON 資料
接下來,我們需要編寫一個方法將 JSON 物件插入到使用者 表中:
public class InsertJsonData { |
程式碼分解
讓我們分解程式碼並探索它的一些元件:
- 資料庫連線:getConnection()方法建立與 PostgreSQL 資料庫的連線。
- SQL 查詢:INSERT INTO users (name, info) VALUES (?, ?::jsonb)查詢將記錄插入到users表中。?::jsonb語法是用於型別轉換的 PostgreSQL 特定語法。雙冒號運算子 :: 是 PostgreSQL 中CAST關鍵字的同義詞,表示型別轉換操作。透過使用?::jsonb,我們指示 PostgreSQL 將第二個引數(JSON 字串)轉換為jsonb資料型別,然後再將其插入info列。這允許在 PostgreSQL 中正確處理和儲存 JSON 資料。
- PreparedStatement:PreparedStatement設定引數並執行 SQL 查詢。pstmt.setString (1, name)設定名稱,pstmt.setString(2, info.toString())設定 JSON 資料。
- JSON 處理:org.json 庫中的JSONObject類建立並處理 JSON 資料。