本記事では、Spring JDBCフレームワーク、OceanBase Connector/J、およびOceanBaseデータベースを使用してアプリケーションを構築し、テーブルの作成、データの挿入、更新、削除、クエリ、およびテーブルの削除など、基本的なデータベース操作を実現する方法について説明します。
前提条件
OceanBaseデータベースをインストール済みで、Oracleモードのテナントが作成されていること。
JDK 1.8とMavenをインストール済みであること。
Eclipseがインストール済みであること。
説明
この記事はEclipse IDE for Java Developers 2022-03バージョンを使用してコードを実行していますが、お好みのツールを選んでサンプルコードを実行することもできます。
操作手順
説明
本記事の操作手順はWindows環境に基づいています。他のOS環境やコンパイラを使用する場合は、操作手順が若干異なる場合があります。
spring-jdbc-oceanbase-clientプロジェクトをEclipseにインポートします。- OceanBaseデータベースのURLを取得します。
spring-jdbc-oceanbase-clientプロジェクトのデータベース接続情報を修正します。spring-jdbc-oceanbase-clientプロジェクトを実行します。
ステップ1:spring-jdbc-oceanbase-client プロジェクトをEclipseにインポートする
Eclipseを開き、メニューバーからFile -> Open Projects from File Systemを選択します。
ポップアップダイアログで、Directoryボタンをクリックしてプロジェクトのディレクトリを選択し、Finishをクリックしてインポートを完了します。
説明
Eclipseを使用してMavenプロジェクトをインポートすると、プロジェクト内の
pom.xmlファイルを自動的に検出し、その記述に基づいて必要な依存ライブラリをダウンロードしてプロジェクトに追加します。
プロジェクトの状況を確認します。

ステップ2:OceanBaseデータベースのURLを取得する
OceanBaseデータベースのデプロイ担当者または管理者から、該当するデータベース接続文字列を取得します。
例:
obclient -hxxx.xxx.xxx.xxx -P2881 -utest_user001@oracel001 -p******その他の接続文字列の情報については、OBClientを使用したOceanBaseテナントへの接続を参照してください。
OceanBaseデータベース接続文字列の情報に基づいて、以下のURLの対応する情報を入力します。
jdbc:oceanbase://$host:$port/$schema_name?user=$user_name&password=$passwordパラメータの説明:
$host:OceanBaseデータベースへの接続IPアドレス。OceanBaseデータベースプロキシ(OceanBase Database Proxy、ODP)接続方式ではODPアドレスを使用し、直接接続方式ではOBServerノードのIPアドレスを使用します。$port:OceanBaseデータベースへの接続ポートを提供します。ODP接続方式のデフォルトポートは2883で、ODPデプロイ時にカスタマイズ可能です。直接接続方式のデフォルトポートは2881で、OceanBaseデータベースのデプロイ時にカスタマイズ可能です。$schema_name:アクセスするスキーマ名です。注意
テナントに接続するユーザーは
CREATE SESSION権限と、該当SchemaのCREATE TABLE、DROP TABLE、INSERT、DELETE、UPDATE、SELECT権限が付与されていなければなりません。その他のユーザー権限の情報については、Oracleモードの権限分類を参照してください。$user_name:テナントの接続アカウント。ODP接続の一般的な形式:ユーザー名@テナント名#クラスタ名またはクラスタ名:テナント名:ユーザー名。直接接続方式の形式:ユーザー名@テナント名。$password:アカウントのパスワード。
その他のOceanBase Connector/J URLパラメータの説明情報については、データベースURLを参照してください。
例:
jdbc:oceanbase://xxx.xxx.xxx.xxx:2881/test_schema001?user=test_user001@oracel001&password=******
ステップ3:spring-jdbc-oceanbase-clientプロジェクトのデータベース接続情報を修正する
ステップ2:OceanBaseデータベース のURLを取得する で取得した情報に基づいて、ファイル spring-jdbc-oceanbase-client/src/main/java/com/example/Main.java のデータベース接続情報を修正します。

例:
- OBServerノードのIPアドレスは
xxx.xxx.xxx.xxxです。 - アクセスポートは2881を使用します。
- アクセスするスキーマ名は
test_schema001です。 - テナントの接続アカウントは
test_user001@oracle001です。oracle001はOceanBaseデータベースで作成されたOracleモードのユーザーテナントで、test_user001はテナントoracle001のユーザー名です。 - パスワードは
******です。
コード:
...
String url = "jdbc:oceanbase://xxx.xxx.xxx.xxx:2881/test_schema001";
String username = "test_user001@oracle001";
String password = "******";
...
ステップ4:spring-jdbc-oceanbase-clientプロジェクトを実行する
プロジェクトナビゲータービューで、src/main/java ディレクトリを見つけて展開します。
Main.java ファイルを右クリックし、Run As -> Java Application を選択します。

Eclipseのコンソールウィンドウで出力結果を確認します。

プロジェクトコードについて
spring-jdbc-oceanbase-client をクリックして、プロジェクトコードをダウンロードします。これは、spring-jdbc-oceanbase-client.zip という名前の圧縮パッケージです。
解凍すると、spring-jdbc-oceanbase-client という名前のフォルダを取得します。ディレクトリ構造は以下のとおりです:
spring-jdbc-oceanbase-client
├── src
│ └── main
│ └── java
│ └── com
│ └── example
│ └── Main.java
└── pom.xml
ファイルの説明:
src:ソースコードのルートディレクトリです。main:アプリケーションの主要なロジックを含むメインコードディレクトリです。java:Javaソースコードディレクトリです。com:Javaパッケージディレクトリです。example:サンプルプロジェクトのパッケージディレクトリです。Main.java:メインクラスで、テーブルの作成やデータの挿入などのロジックが含まれます。pom.xml:Mavenプロジェクトの設定ファイルで、プロジェクトの依存関係とビルド設定を管理するために使用されます。
pom.xmlコードの紹介
pom.xml ファイルはMavenプロジェクトの設定ファイルで、プロジェクトの依存関係、プラグイン、ビルドルールなどの情報を定義しています。MavenはJavaプロジェクト管理ツールで、依存関係のダウンロード、プロジェクトのコンパイル、パッケージングなどの操作を自動化できます。
本記事の pom.xml ファイルのコードは、主に以下のいくつかの部分が含まれます:
ファイル宣言ステートメントです。
このファイルがXMLファイルであり、使用しているXMLのバージョンが
1.0で、文字エンコーディング方式がUTF-8であることを宣言しています。コード:
<?xml version="1.0" encoding="UTF-8"?>POMのネームスペースとPOMモデルのバージョンを設定します。
xmlnsを使用して、POMのネームスペースをhttp://maven.apache.org/POM/4.0.0と指定します。xmlns:xsiを使用して、XMLネームスペースをhttp://www.w3.org/2001/XMLSchema-instanceと指定します。xsi:schemaLocationを使用して、POMのネームスペースをhttp://maven.apache.org/POM/4.0.0、POMのXSDファイルの場所をhttp://maven.apache.org/xsd/maven-4.0.0.xsdと指定します。<modelVersion>要素を使用して、このPOMファイルで使用されるPOMモデルバージョンを4.0.0と指定します。
コード:
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- その他の設定 --> </project>基本情報を設定します。
<groupId>を使用して、プロジェクトが属する組織をcom.exampleと指定します。<artifactId>を使用して、プロジェクトの名前をspring-jdbc-oceanbase-clientと指定します。<version>を使用して、プロジェクトのバージョン番号を1.0-SNAPSHOTと指定します。
コード:
<groupId>com.example</groupId> <artifactId>spring-jdbc-oceanbase-client</artifactId> <version>1.0-SNAPSHOT</version>プロジェクトソースファイルのプロパティを設定します。
Mavenのコンパイラプラグインを
maven-compiler-pluginと指定し、ソースコードとターゲットJavaバージョンをどちらも8に設定しています。これは、プロジェクトのソースコードがJava 8の機能を使用して記述されており、コンパイルされたバイトコードもJava 8ランタイム環境と互換性があることを意味します。この設定により、プロジェクトはコンパイル時および実行時にJava 8の構文と機能を正しく処理できるように確保することができます。説明
Java 1.8とJava 8は、同じバージョンの異なる命名ルールです。
コード:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>8</source> <target>8</target> </configuration> </plugin> </plugins> </build>プロジェクトが依存するコンポーネントを設定します。
oceanbase-client依存ライブラリを追加し、データベースとのインタラクションを行います:<groupId>を使用して、依存関係が属する組織をcom.oceanbaseと指定します。<artifactId>を使用して、依存関係の名前をoceanbase-clientと指定します。<version>を使用して、依存関係のバージョン番号を2.4.2と指定します。
説明
この部分のコードでは、プロジェクトが依存するコンポーネントとしてOceanBase Connector/JのバージョンV2.4.2を定義しています。他のバージョンの情報については、OceanBase JDBCドライバーを参照してください。
コード:
<dependency> <groupId>com.oceanbase</groupId> <artifactId>oceanbase-client</artifactId> <version>2.4.2</version> </dependency>spring-jdbc依存関係ライブラリを追加します:<groupId>を使用して、依存関係が所属する組織をorg.springframeworkと指定します。<artifactId>を使用して、依存関係の名前をspring-jdbcと指定します。<version>を使用して、依存関係のバージョン番号を5.2.0.RELEASEと指定します。
コード:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.0.RELEASE</version> </dependency>
Main.javaコードの紹介
Main.java ファイルはサンプルプログラムの一部であり、コードはSpring JDBCフレームワークを使用してデータベース操作を実行する方法を示しています。まず、データベース接続情報を設定します。次に、JdbcTemplate オブジェクトを作成してデータベース操作を実行します。コードには、テーブルの作成、データの挿入、データのクエリを実行するサンプルも含まれます。
本記事の Main.java ファイルのコードには、主に以下の部分が含まれます:
パッケージを定義し、必要なクラスをインポートします。
- 現在のコードが属するパッケージ名を
com.exampleと宣言します。 JdbcTemplateクラスをインポートします。Spring JDBCフレームワークのコアクラスで、データベース操作の実行に使用されます。DriverManagerDataSourceクラスをインポートします。Springが提供するDataSourceインターフェースを実装したデータソースクラスで、データベース接続情報の設定に使用されます。
コード:
package com.example; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DriverManagerDataSource;- 現在のコードが属するパッケージ名を
Mainクラスを作成し、mainメソッドを定義します。- プログラムのエントリポイントとして、
Mainという名前のpublicクラスを定義します。クラス名はファイル名と一致させる必要があります。 - プログラムの実行開始点として、public staticメソッド
mainを定義します。 - その他のデータベース操作です。
コード:
public class Main { public static void main(String[] args) { // データベース接続の情報 // データソースの作成 // JdbcTemplateオブジェクトの作成 // テーブルの作成 // データの挿入 // データの更新 // データの削除 // データのクエリ // テーブルの削除 } }- プログラムのエントリポイントとして、
データベース接続の情報を定義します。
データベースに接続するためのURL、ユーザー名、パスワードを定義します。
$host、$port、$schema_name、$user_name、$passwordを実際のデータベース接続情報に置き換える必要があります。コード:
String url = "jdbc:oceanbase://$host:$port/$schema_name"; String username = "$user_name"; String password = "$password";パラメータの説明:
$host:OceanBaseデータベースへの接続IPアドレス。ODP接続方式ではODPアドレスを使用し、直接接続方式ではOBServerノードのIPアドレスを使用します。$port:OceanBaseデータベースへの接続ポートを提供します。ODP接続方式のデフォルトポートは2883で、ODPデプロイ時にカスタマイズ可能です。直接接続方式のデフォルトポートは2881で、OceanBaseデータベースのデプロイ時にカスタマイズ可能です。$schema_name:アクセスするスキーマ名です。その他のURLパラメータの説明情報については、データベースURLを参照してください。
$user_name:テナントの接続アカウント。ODP接続の一般的な形式:ユーザー名@テナント名#クラスタ名またはクラスタ名:テナント名:ユーザー名。直接接続方式の形式:ユーザー名@テナント名。$password:アカウントのパスワード。
データソースを作成します。
DriverManagerDataSourceオブジェクトを作成し、ドライバークラス名、データベースURL、ユーザー名、パスワードを含むデータベース接続の関連情報を設定します。具体的な手順は以下のとおりです:DriverManagerDataSourceオブジェクトを作成し、データベース接続情報を設定するために使用されます。- ドライバークラス名の設定:
setDriverClassNameメソッドを呼び出すことで、データベースドライバークラス名をcom.oceanbase.jdbc.Driverに設定します。これはOceanBaseデータベースに接続するためのドライバークラスです。 - データベースURLの設定:
setUrlメソッドを呼び出すことで、データベースのURLを設定します。 - ユーザー名の設定:
setUsernameメソッドを呼び出すことで、データベースのユーザー名を設定します。 - パスワードの設定:
setPasswordメソッドを呼び出すことで、データベースのパスワードを設定します。
コード:
DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.oceanbase.jdbc.Driver"); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password);JdbcTemplateオブジェクトを作成します。JdbcTemplateオブジェクトを作成します。これはSpring JDBCフレームワークのコアクラスの1つです。JdbcTemplateは、SQLステートメントの実行、データの更新、データのクエリなど、データベース操作を実行するメソッドを提供します。コード:
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);テーブルを作成します。
- テーブルを作成するSQLステートメントを定義します。SQLステートメントでテーブル名を
test_springjdbcと指定し、idという名前のNUMBERタイプの列とnameという名前のVARCHAR2(20)タイプの列の2つの列を定義しました。 - テーブルを作成するSQLステートメントを実行します。
jdbcTemplateオブジェクトはexecuteメソッドを呼び出すことで、上記で定義したテーブルを作成するSQLステートメントを実行しました。 - コンソールにテーブル作成が成功したことを示すメッセージを出力します。
コード:
String createTableSql = "CREATE TABLE test_springjdbc (id NUMBER, name VARCHAR2(20))"; jdbcTemplate.execute(createTableSql); System.out.println("Create table successfully.");- テーブルを作成するSQLステートメントを定義します。SQLステートメントでテーブル名を
データを挿入します。
- データを挿入するSQLステートメントを定義します。SQLステートメントで挿入するテーブルを
test_springjdbc、列をidとnameと指定し、(1,'A1')、(2,'A2')、(1,'A3')の2行のデータを挿入します。 - データを挿入するSQLステートメントを実行します。
jdbcTemplateオブジェクトはupdateメソッドを呼び出すことで、上記で定義したデータを挿入するSQLステートメントを実行しました。 - コンソールにデータ挿入が成功したことを示すメッセージを出力します。
コード:
String insertDataSql = "INSERT INTO test_springjdbc (id,name) VALUES (1,'A1'), (2,'A2'), (1,'A3')"; jdbcTemplate.update(insertDataSql); System.out.println("Insert data successfully.");- データを挿入するSQLステートメントを定義します。SQLステートメントで挿入するテーブルを
データを更新します。
- データベースのテーブル
test_springjdbc内でidが1のレコードのnameフィールドの値をA11に更新するSQLステートメントを定義します。 jdbcTemplateオブジェクトを使用して、SQLステートメントを実行し、データベースに更新操作を適用します。- コンソールにデータ更新が成功したことを示すメッセージを出力します。
コード:
String updateDataSql = "UPDATE test_springjdbc SET name = 'A11' WHERE id = 1"; jdbcTemplate.update(updateDataSql); System.out.println("Update data successfully.");- データベースのテーブル
データを削除します。
- SQLステートメントを定義し、データベースのテーブル
test_springjdbcからidが2のレコードを削除するために使用されます。 jdbcTemplateオブジェクトを使用して、SQLステートメントを実行し、データベースに削除操作を適用します。- コンソールにデータ削除が成功したことを示すメッセージを出力します。
コード:
String deleteDataSql = "DELETE FROM test_springjdbc WHERE id = 2"; jdbcTemplate.update(deleteDataSql); System.out.println("Delete data successfully.");- SQLステートメントを定義し、データベースのテーブル
データをクエリします。
- データのクエリを実行するSQLステートメントを定義します。SQLステートメントで
SELECT *を使用してすべての列を選択し、test_springjdbcテーブルからのデータのクエリを実行します。 - データのクエリを実行するSQLステートメントを実行します。
jdbcTemplateオブジェクトはqueryメソッドを呼び出すことで、上記で定義したデータのクエリを実行するSQLステートメントを実行し、パラメータとしてコールバック関数を渡します。 - コールバック関数内のコードは、
ResultSetオブジェクト(rs)を使用してクエリ結果の各行データを取得し、処理を行います。コールバック関数は、getIntとgetStringメソッドを使用してResultSetオブジェクトからidとname列の値を取得し、コンソールに出力します。最後に、コールバック関数はnullを返します。 - コンソールにデータクエリが成功したことを示すのメッセージを出力します。
コード:
String selectDataSql = "SELECT * FROM test_springjdbc"; jdbcTemplate.query(selectDataSql, (rs, rowNum) -> { int id = rs.getInt("id"); String name = rs.getString("name"); System.out.println("id: " + id + ", name: " + name); return null; }); System.out.println("Query data successfully.");- データのクエリを実行するSQLステートメントを定義します。SQLステートメントで
テーブルを削除します。
- SQLステートメントを定義し、データベース内の
test_springjdbcテーブルを削除するために使用されます。 jdbcTemplateオブジェクトを使用してSQLステートメントを実行し、データベースにテーブルの削除操作を適用します。- テーブル削除が成功したことを示すメッセージを出力します。
コード:
String deleteTableSql = "DROP TABLE test_springjdbc"; jdbcTemplate.execute(deleteTableSql); System.out.println("Table drop successfully.");- SQLステートメントを定義し、データベース内の
全コード表示
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>spring-jdbc-oceanbase-client</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.oceanbase</groupId>
<artifactId>oceanbase-client</artifactId>
<version>2.4.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
</dependencies>
</project>
package com.example;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
public class Main {
public static void main(String[] args) {
// Database Connect Information
String url = "jdbc:oceanbase://$host:$port/$schema_name";
String username = "$user_name";
String password = "$password";
// create data source
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.oceanbase.jdbc.Driver");
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
// Create a JdbcTemplate object
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
// Create table
String createTableSql = "CREATE TABLE test_springjdbc (id NUMBER, name VARCHAR2(20))";
jdbcTemplate.execute(createTableSql);
System.out.println("Create table successfully.");
// Insert data
String insertDataSql = "INSERT INTO test_springjdbc (id,name) VALUES (1,'A1'), (2,'A2'), (1,'A3')";
jdbcTemplate.update(insertDataSql);
System.out.println("Insert data successfully.");
// Update data
String updateDataSql = "UPDATE test_springjdbc SET name = 'A11' WHERE id = 1";
jdbcTemplate.update(updateDataSql);
System.out.println("Update data successfully.");
// Delete data
String deleteDataSql = "DELETE FROM test_springjdbc WHERE id = 2";
jdbcTemplate.update(deleteDataSql);
System.out.println("Delete data successfully.");
// Query data
String selectDataSql = "SELECT * FROM test_springjdbc";
jdbcTemplate.query(selectDataSql, (rs, rowNum) -> {
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println("id: " + id + ", name: " + name);
return null;
});
System.out.println("Query data successfully.");
// Delete table
String deleteTableSql = "DROP TABLE test_springjdbc";
jdbcTemplate.execute(deleteTableSql);
System.out.println("Table drop successfully.");
}
}
関連ドキュメント
その他のOceanBase Connector/Jの情報については、OceanBase JDBCドライバーを参照してください。
クリックしてspring-jdbc-oceanbase-clientサンプルプロジェクトをダウンロード