1. 概要

このチュートリアルでは、ApacheSoftwareFoundationによってオープンソースプロジェクトとして開発されたJavaベースのリレーショナルデータベースエンジンであるApacheDerbyデータベースエンジンについて学習します。

インストールと構成から始めて、それと対話するために提供されるツールを見ていきます。 サンプルデータベースを作成した後、Derbyのコマンドラインツールを使用してSQLコマンドを実行する方法を学習します。 最後に、プレーンJDBCとSpring Bootアプリケーションを使用してプログラムでデータベースに接続する方法を説明します。

2. 展開モード

Apache Derbyには、単純な組み込みオプションとクライアント/サーバーオプションの2つの基本的なデプロイメントオプションがあります。

組み込みモードでは、Derbyは単純なワンユーザーJavaアプリケーションと同じJava仮想マシン(JVM)内で実行されます。 自動化された起動とシャットダウンにより、通常はエンドユーザーには見えず、管理者の介入は必要ありません。 このモードでは、一時データベースを管理せずにセットアップできます。

クライアント/サーバーモードでは、Derbyは、ネットワーク全体でマルチユーザー接続を提供するアプリケーションによって起動されたときにサーバーをホストするJava仮想マシン(JVM)で実行されます。

3. インストールと構成

ApacheDerbyをインストールする方法を見てみましょう。

3.1. インストール

まず、ApacheDerbyの最新バージョンをこちらからダウンロードできます。 その後、ダウンロードしたファイルを解凍します。 抽出されたインストールには、いくつかのサブディレクトリが含まれています。

$ ls 
bin  demo  docs  index.html  javadoc  KEYS  lib  LICENSE  NOTICE  RELEASE-NOTES.html  test
  • bin には、ユーティリティを実行し、環境をセットアップするためのスクリプトが含まれています
  • demoにはサンプルプログラムが含まれています
  • javadocにはAPIドキュメントが含まれています
  • docsにはApacheDerbyドキュメントが含まれています
  • libにはApacheDerby.jarファイルが含まれています
  • test には、ApacheDerbyの回帰テストが含まれています

3.2. 構成

データベースエンジンを起動する前に、いくつかの設定を行う必要があります。

まず、 DERBY_HOME ApacheDerbyを抽出した場所への環境変数置き場。 たとえば、Apache Derbyがにインストールされている場合は、以下のコマンドを使用できます。 / opt / derby-db ディレクトリ:

export DERBY_HOME=/opt/derby-db

次に、 DERBY_HOME / bin ディレクトリをPATH環境変数に追加して、任意のディレクトリからDerbyスクリプトを実行できるようにします。

export PATH="$DERBY_HOME/bin:$PATH"

3.3. ダービー図書館

libディレクトリにはApacheDerbyによって提供されるさまざまなライブラリがあります。

$ ls
derbyclient.jar     derbynet.jar            derbyshared.jar
derby.jar           derbyoptionaltools.jar  derbytools.jar
derbyrun.jar        derby.war               derbyLocale_XX.jar ...

各ライブラリについて以下に説明します。

  • derby.jar :組み込み環境に必要です。 クライアント/サーバー環境の場合、サーバー上にこのライブラリのみが必要です。
  • derbyshared.jar:組み込みエンジン、ネットワークサーバー、リモートクライアント、またはデータベースツールのいずれを実行しているかに関係なく、すべての構成で必要です。
  • derbytools.jar:すべてのApache Derbyツール(IJ、DBLook、およびインポート/エクスポート)を実行するために必要です。 ネットワークサーバーを実行している場合、またはアプリケーションがJDBCドライバーを直接参照している場合にも必要です。
  • derbyrun.jar:ApacheDerbyツールを起動するために使用されます
  • derbynet.jar:ApacheDerbyネットワークサーバーを起動するために必要です
  • derbyclient.jar:ApacheDerbyネットワーククライアントドライバーを使用するために必要
  • derbyLocale_XX.jar:ApacheDerbyのメッセージをローカライズするために必要

4. ツール

Apache Derbyは、さまざまなアプリケーション向けの多くのツールを提供します。 短縮名を使用してderbyrun.jarでApacheDerbyツールとユーティリティを実行でき、javaCLASSPATH環境変数を設定する必要はありません。 derbyrun.jarファイルは他のDerbyJARファイルと同じフォルダーにある必要があります。

4.1. IJ

IJは、JDBCベースのJavaコマンドラインアプリケーションです。 その主な目的は、DerbySQLステートメントをインタラクティブにまたはスクリプトを介して実行できるようにすることです。

まず、IJツールを実行してみましょう。

$ $DERBY_HOME/bin/ij
ij version 10.13
ij> 

次のコマンドを使用して実行することもできます。

$ java -jar $DERBY_HOME/lib/derbyrun.jar ij
ij version 10.13
ij> 

すべてのコマンドはセミコロンで終わることに注意してください。 セミコロンなしでコマンドを実行すると、コマンドラインは次の行に移動します。

SQLステートメントの使用に関するセクションでは、IJを使用していくつかのコマンドを実行する方法を説明します。

さらに、IJはプロパティを使用してコマンドを実行できます。 これは、保存 一部反復作業に役立ちます by using プロパティサポートby [X216X ] the IJ tool

IJプロパティは次の方法で設定できます。

  • コマンドラインで-pproperty-fileオプションを使用してプロパティファイルを指定する
  • コマンドラインで-Dオプションを使用する

プロパティファイルを作成し、必要なすべてのプロパティを追加してから、次のコマンドを実行できます。

$ java -jar derbyrun.jar ij -p file-name.properties

file-name.properties ファイルが現在のディレクトリに存在しない場合、java.io.FileNotFoundException。を取得します。

たとえば、特定の名前で特定のデータベースへの接続を作成するとします。 ij.databaseプロパティを使用してこれを行うことができます。

$ java -jar -Dij.protocol=jdbc:derby: -Dij.database=baeldung derbyrun.jar ij
ij version 10.13
CONNECTION0* - 	jdbc:derby:baeldung
* = current connection

4.2. DBLook

dblook ツールは、データベースのDDL(データ定義言語)を提供します。 たとえば、baeldungデータベースのDDLをコンソールに書き込むことができます。

$ $DERBY_HOME/bin/dblook -d jdbc:derby:baeldung
-- Timestamp: 2021-08-23 01:29:48.529
-- Source database is: baeldung
-- Connection URL is: jdbc:derby:baeldung
-- appendLogs: false

-- ----------------------------------------------
-- DDL Statements for schemas
-- ----------------------------------------------

CREATE SCHEMA "basic_users";

-- ----------------------------------------------
-- DDL Statements for tables
-- ----------------------------------------------

CREATE TABLE "APP"."authors" ("id" INTEGER NOT NULL, "first_name" VARCHAR(255) , "last_name" VARCHAR(255));

-- ----------------------------------------------
-- DDL Statements for keys
-- ----------------------------------------------

-- PRIMARY/UNIQUE
ALTER TABLE "APP"."authors" ADD CONSTRAINT "SQL0000000000-582f8014-017b-6e26-ada1-00000644e000" PRIMARY KEY ("id");

dblook には、以下で説明する他のオプションがあります。

-o を使用して、DDLをbaeldung.sqlのようなファイルに書き込むことができます。

$ sudo $DERBY_HOME/bin/dblook -d jdbc:derby:baeldung -o baeldung.sql

-z でスキーマを指定し、 -t:でテーブルを指定することもできます。

$ sudo $DERBY_HOME/bin/dblook -d jdbc:derby:baeldung -o baeldung.sql -z SCHEMA_NAME -t "TABLE_NAME"

4.3. Sysinfo

Apache Derby sysinfo ツールは、Java環境とDerbyバージョンに関する情報を表示します。 さらに、 sysinfo ツールは、コンソールにシステム情報を表示します。

$ java -jar $DERBY_HOME/lib/derbyrun.jar sysinfo

------------------ Java Information ------------------
Java Version:    11.0.11
Java Vendor:     Ubuntu
Java home:       /usr/lib/jvm/java-11-openjdk-amd64
Java classpath:  /opt/derby-db/lib/derbyrun.jar
OS name:         Linux
OS architecture: amd64
OS version:      5.11.0-27-generic
Java user name:  arash
Java user home:  /home/arash
Java user dir:   /opt/derby-db
java.specification.name: Java Platform API Specification
java.specification.version: 11
java.runtime.version: 11.0.11+9-Ubuntu-0ubuntu2.20.04
--------- Derby Information --------
[/opt/derby-db/lib/derby.jar] 10.13.1.1 - (1873585)
[/opt/derby-db/lib/derbytools.jar] 10.13.1.1 - (1873585)
[/opt/derby-db/lib/derbynet.jar] 10.13.1.1 - (1873585)
[/opt/derby-db/lib/derbyclient.jar] 10.13.1.1 - (1873585)
[/opt/derby-db/lib/derbyshared.jar] 10.13.1.1 - (1873585)
[/opt/derby-db/lib/derbyoptionaltools.jar] 10.13.1.1 - (1873585)

5. ApacheDerbyのSQLステートメント

ここ 良い 診る ApacheDerbyが提供した重要なSQLステートメントのいくつか。 例を使用して、各ステートメントの構文を見ていきます。

5.1. データベースの作成

connectコマンドと接続文字列のcreate= true 属性を使用して、新しいデータベースを作成できます。

ij> connect 'jdbc:derby:databaseName;create=true';

5.2. データベースに接続する

IJは、Derbyデータベースと対話的に対話するときに、URL構文に基づいて適切なドライバーを自動的にロードします。

ij> connect 'jdbc:derby:baeldung' user 'user1' password 'pass123';

5.3. スキーマの作成

CREATE SCHEMA ステートメントは、一連のオブジェクトの特定の名前空間を識別する方法であるスキーマを定義します。

CREATE SCHEMA schema_name AUTHORIZATION userName;

スキーマ名は128文字を超えることはできず、データベース内でも一意である必要があります。 さらに、スキーマ名を接頭部SYSで始めることはできません。

baeldung_authorsという名前のスキーマの例を次に示します。

ij> CREATE SCHEMA baeldung_authors;

加えてbaeldung_authorsのスキーマを作成できます。 ID arashの特定のユーザーは以下にアクセスできます。

ij> CREATE SCHEMA baeldung_authors AUTHORIZATION arash;

5.4. ドロップスキーマ

ドロップできます a によるスキーマ を使用して  DROP SCHEMA ステートメント、およびまた、ターゲットスキーマは空である必要があります  DROPSCHEMAが成功します。 APP スキーマ(デフォルトのユーザースキーマ)または the  SYS スキーマ:

DROP SCHEMA schema_name RESTRICT;

を使用して RESTRICTキーワード, 私たち 強制することができます そのルール そこの できません なれ 任意のオブジェクト で定義 a データベースから削除するスキーマの指定されたスキーマ。

スキーマを削除する例を見てみましょう。

ij> DROP SCHEMA baeldung_authors RESTRICT;

5.5. テーブルの作成

CREATETABLEステートメントを使用して テーブルを作成する, どれの 含む 列と制約:

CREATE TABLE table_name (
   column_name1 column_data_type1 constraint (optional),
   column_name2 column_data_type2 constraint (optional),
);

例を見てみましょう:

ij> CREATE TABLE posts(post_id INT NOT NULL, publish_date DATE NOT NULL,
    view_number INT DEFAULT 0, PRIMARY KEY (post_id));

もし私達 行う いいえ デフォルト値を指定する, ヌル は 挿入  the 桁 なので the デフォルト 価値

CRUDアクションのINSERT、UPDATE、DELETE、SELECTなどの他のSQLステートメントは、標準のSQLに似ています。

6. ApacheDerbyを使用したJDBCプログラミング

ここでは、ApacheDerbyをデータベースエンジンとして使用するJavaアプリケーションを作成する方法を学習します。

6.1. Mavenの依存関係

二つあります ダービー 運転手  Maven ダービー derbynet。 前者は 組み込みアプリケーションに使用, その間 後者 使用されている クライアント/サーバーアプリケーション用。

derbyのMaven依存関係を追加しましょう。

<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derby</artifactId>
    <version>10.13.1.1</version>
</dependency>

また、derbyclientのMaven依存関係を追加します。

<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derbyclient</artifactId>
    <version>10.13.1.1</version>
</dependency>

6.2. JDBCURL接続

に接続できます the データベースと 違う 接続文字列パラメータ 為に クライアント/サーバーおよび組み込みアプリケーション。

以下の構文では、埋め込みモードに使用できます。

jdbc:derby:[subsubprotocol:][databaseName][;attribute=value]

また、クライアント/サーバーモードには以下の構文を使用できます。

jdbc:derby://server[:port]/databaseName[;attribute=value]

データベースURLには、埋め込みモードのホスト名とポート番号が含まれていません。 例えば:

String urlConnection = "jdbc:derby:baeldung;create=true";

6.3. 埋め込みモードでApacheDerbyを使用する

埋め込みモードでApacheDerbyデータベースに接続し、現在のディレクトリにまだ存在しない場合は作成し、テーブルを作成し、SQLステートメントを使用してテーブルに行を挿入しましょう。

String urlConnection = "jdbc:derby:baeldung;create=true";
Connection con = DriverManager.getConnection(urlConnection);
Statement statement = con.createStatement();
String sql = "CREATE TABLE authors (id INT PRIMARY KEY,first_name VARCHAR(255),last_name VARCHAR(255))";
statement.execute(sql);
sql = "INSERT INTO authors VALUES (1, 'arash','ariani')";
statement.execute(sql);

6.4. クライアント/サーバーモードでApacheDerbyを使用する

まず、以下のコマンドを実行して、ApacheDerbyをクライアント/サーバーモードで起動します。

$ java -jar $DERBY_HOME/lib/derbyrun.jar server start 
Sat Aug 28 20:47:58 IRDT 2021 : Security manager installed using the Basic server security policy.
Sat Aug 28 20:47:58 IRDT 2021 : Apache Derby Network Server - 10.13.1.1 -
(1873585) started and ready to accept connections on port 1527

JDBC APIを使用してローカルホスト上のApacheDerbyサーバーに接続し、baeldungデータベースのauthorsテーブルからすべてのエントリを選択します。

String urlConnection = "jdbc:derby://localhost:1527/baeldung";
   try (Connection con = DriverManager.getConnection(urlConnection)) {
       Statement statement = con.createStatement();
       String sql = "SELECT * FROM authors";
       ResultSet result = statement.executeQuery(sql);
         while (result.next()) {
           // We can print or use ResultSet here
         }
   } catch (SQLException ex) {
       ex.printStackTrace();
 }

7. SpringBootを使用したApacheDerby

このセクションでは、 Spring Boot に基づいてアプリケーションを作成する方法について詳しく説明しませんが、ApacheDerbyデータベースとの対話に関連する設定についてのみ説明します。

7.1. ApacheDerbyの依存関係

Spring DataとApacheDerbyの依存関係をSpringBootからプロジェクトに追加して、ApacheDerbyをプロジェクトに組み込む必要があります。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derbyclient</artifactId>
    <version>10.13.1.1</version>
</dependency>

7.2. スプリングブート構成

次のアプリケーションプロパティを追加することで、Derbyを永続データベースとして使用できます。

spring.datasource.url=jdbc:derby://localhost:1527/baeldung 
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.DerbyTenSevenDialect 
spring.jpa.hibernate.ddl-auto=update
spring.datasource.driver-class-name=org.apache.derby.jdbc.ClientDriver

8. 結論

このチュートリアルでは、ApacheDerbyのインストールと構成について説明しました。 その後、ツールの概要と最も重要なSQLステートメントのいくつかについて説明しました。 Javaでのスニペットコードを使用したJDBCプログラミングについて説明し、最後に、ApacheDerbyを永続データベースとして使用するようにSpringBootを構成する方法を学びました。

いつものように、この記事で使用されている例は、GitHubから入手できます。