目次
I.はじめに
最後の初心者のWeb開発の簡単な要約(6)-SpringのIoCコンテナーは、主にSpringとは何かを要約しています。Webアプリケーション開発の過程では、データベースの読み取りと書き込みから切り離せません。データベースは、リレーショナルデータベースと非リレーショナルデータベースに分けられます。
リレーショナルデータベースには、2次元テーブルと直接接続(タプル、属性、フィールド、キーワードなど)で構成されるデータ構造があります。この2次元テーブルは、一般にテーブル名と呼ばれます。タプルはテーブルの各行であり、通常はレコードと呼ばれます。属性はテーブルの各列であり、通常はフィールドと呼ばれます。ドメインは属性の値の範囲です。 keyは主キーであり、通常は1つ以上の列で構成されます。
一般的なリレーショナルデータベースは、Oracle、MySQL、PosgreSQL、SQLite、SQL Server、sqliteなどです。
Javaプログラムは、リレーショナルデータベースにアクセスするためのJDBCインターフェイスを提供します。通常、次の手順が必要です。
public static void main(String[] args) { String url = ""; String user = ""; String password = ""; /** * 表示一个数据库的连接 */ Connection connection = null; /** * 执行数据库SQL语句,并返回相应结果的对象,其中Statement有两个子接口: * PreparedStatement:预编译对象,用于解决sql的注入问题; * CallableStatement:支持带参数的SQL操作,支持调用存储过程,是PreparedStatement的子接口 */ Statement statement; /** * 用来存储执行SQL语句返回的结果 */ ResultSet set; //1.初始化JDBC驱动 try { Class.forName("org.hsqldb.jdbcDriver"); } catch (ClassNotFoundException e) { System.out.println("ERROR:failed to load jdbc driver"); return; } //2.开始读取相关的数据库文件 try { //(1).使用DriverManager来注册驱动,创建数据库的连接对象Connection connection = DriverManager.getConnection(url, user, password); //(2).通过Connection获得执行数据库语句的对象Statement statement = connection.createStatement(); //(3).创建一个查询语句,返回查询的结果 set = statement.executeQuery("select * from user"); } catch (SQLException e) { e.printStackTrace(); } }
非リレーショナルデータベースはキーと値のペアで格納され、構造は固定されていません。各タプルは異なるフィールドを持つことができ、各タプルは必要に応じて独自のキーと値のペアを追加できます。
一般的な非リレーショナルデータベースには、キー値構造を備えたMemcached、JSONストレージを備えたMongoDB、データコンテンツを検索するためのNoSQLを備えたSplunkが含まれます。
そして今回は、リレーショナルデータベースでHSQLDBデータベースを簡単に学習します。
二HSQLDB
1.HSQLDBとは
HSQLDB(HyperSQL Database)、標準のSQL構文とJavaインターフェイスを備えたオープンソースのJavaデータベース。サイズが小さいため、複雑なデータベース構成なしで使用でき、小さなデータに適しています。
公式ウェブサイトで提供されているjarパッケージには、データベースエンジン(HyperSQL RDBMSエンジン(HSQLDB))、データベースドライバー(HyperSQL JDBCドライバー)、その他のユーザーインターフェイス操作(データベースマネージャー、SQLツールなど)が含まれています。
HSQLDBはカタログと呼ばれ、通常は2〜6個のファイルが含まれ、同じディレクトリにありますが、拡張子は異なります。
- .properties:データベースの基本構成
- .script:テーブルおよびその他のデータベースオブジェクトの定義
- .log:データベースへの最近の変更
- .data:バッファテーブルデータ
- .backup:データファイルのバックアップ圧縮ファイル。最後の最終状態データを保存します。
キャッシュされたテーブルがない場合、.dataと.backupは存在しません。
2.HSQLDBのインストール
JDKをサポートしている限り。公式ウェブサイトで対応する.zipをダウンロードし、任意のディレクトリに解凍します。
- (1)公式Webサイトhttp://hsqldb.orgに直接 アクセスし、次の図に示すリンクをクリックします。
- (2)クリックし続け、対応するダウンロードリソースを見つけますhttps://sourceforge.net/projects/hsqldb/files/hsqldb/hsqldb_2_5/
- (3)ダウンロードして解凍した後、図に示すように、コアjarパッケージhsqldb.jarはlibディレクトリにあります。
通常、作成されたデータベースファイルはデータディレクトリに保存されます。libディレクトリにはコアhsqldb.jarパッケージが保存され、HSQLDBデータベースはjarパッケージを介して開始および管理できます。
3つのHSQLDBデータベースエンジン
いわゆるデータベースエンジンは、データの保存、処理、保護に使用されるコア部分です。データベースエンジンを使用して、アクセス権を制御し、トランザクションを迅速に処理します。データエンジンを介してデータベースファイルにアクセスします。HSQLDBデータベースエンジンは、サーバーモード、インプロセスモード、メモリのみのモードの3つのモードに分かれています。
1.サーバーモード
Oracle、MySql、その他のデータベースと同様に、データベースサービスを提供するために別のJVMが開始されます。データベースが開始されると、サーバーとして存在し、WebアプリケーションはJDBCドライバーを介してデータベースサービスに接続できます。最大10個のデータベース接続を指定できます。
サーバーモードは、サーバーモード、Webサーバーモード、サーブレットモードに分けられます。
サーバーモード
- (1)通信プロトコル
HSQLDB独自の通信プロトコルを採用します。
- (2)データベースを作成または接続します
次のように、hsqldb.jarを介してデータベースを作成または接続します(データベースが存在しない場合は新しいデータベースを作成するか、既存のデータベースに接続します)。
データディレクトリで次のコマンドを実行します。
MacBook-Pro:data j1$ java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 ./ec-goods/book -dbname.0 xbook
-database.nは、データベースファイルのアドレスと名前を表し、相対パスをサポートし、その後に「データベースアドレス/データベース名」が続きます。
-dbname.nは、コード内のデータベースにアクセスするために使用されるデータベースファイルのエイリアスを表します。
-databseおよび-dbnameの後の.nは、複数のデータベースを作成または接続できることを示し、サポートされる最大数は10です。一度に複数のデータベースを作成または接続する例:
MacBook-Pro:data j1$ java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 ./ec-goods/book -dbname.0 xbook -database.1 ./ec-goods1/book1 -dbname.1 xbook1
[Server@87aac27]: Startup sequence initiated from main() method
[Server@87aac27]: Could not load properties from file
[Server@87aac27]: Using cli/default properties only
[Server@87aac27]: Initiating startup sequence...
[Server@87aac27]: Server socket opened successfully in 9 ms.
[Server@87aac27]: Database [index=0, id=0, db=file:./ec-goods1/book1, alias=xbook1] opened successfully in 255 ms.
[Server@87aac27]: Database [index=1, id=1, db=file:./ec-goods/book, alias=xbook] opened successfully in 27 ms.
[Server@87aac27]: Startup sequence completed in 291 ms.
[Server@87aac27]: 2021-02-24 06:25:55.081 HSQLDB server 2.5.1 is online on port 9001
[Server@87aac27]: To close normally, connect and execute SHUTDOWN SQL
[Server@87aac27]: From command line, use [Ctrl]+[C] to abort abruptly
データディレクトリに入った後、これら2つのテーブルが見つかり、追加されました。各テーブルに対応するファイルは、第2部で説明したファイルです。ここで、.lokはデータベースが開いていることを意味します。
- (3)接続インスタンスを取得するためのコード
このモードのjdbc-urlは次のとおりです。jdbc:hsqldb:hsql:// localhost / databaseエイリアス、Connectionインスタンスを取得するためのコードは次のとおりです。
Connection connection = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/xbook", user, password);
Webサーバーモード
- (1)通信プロトコル
HTTPプロトコル。主にファイアウォールに使用され、デフォルトのポートは9001です。
- (2)データベースを作成または接続します
コマンドは引き続きhsqldb.jarを介してデータディレクトリで実行されますが、図に示すように、org.hsqldb.Serverはorg.hsqldb.server.WebServerに置き換えられます。
MacBook-Pro:data j1$ java -cp ../lib/hsqldb.jar org.hsqldb.server.WebServer -database.0 ./ec-goods/book -dbname.0 xbook
- (3)接続インスタンスを取得するためのコード
このモードのjdbc-urlは次のとおりです。jdbc:hsqldb:http:// localhost / databaseエイリアス、コード例は次のとおりです。
Connection connection = DriverManager.getConnection("jdbc:hsqldb:http://localhost/xbook", user, password);
サーブレットモード
WebServerモードと同じように、通信プロトコルとしてHTTPプロトコルも使用します。主に、サーブレットコンテナを使用してTomcatおよびその他のアプリケーションサーバーにデータベースアクセスを提供するため。また、作成されたデータベースをサーブレットエンジンサーバーから分離することはできません。Hsqldb.jarパッケージのサーブレットクラスは、アプリケーションサーバーの対応する位置に配置する必要があります。
通常、アプリケーションサーバーのデータベースエンジンはこのモードを採用しません。
このモードのjdbc-urlは次のとおりです。jdbc:hsqldb:http:// localhost /データベースエイリアス。
2.プロセスモード(インプロセス)
- (1)通信方法
スタンドアロンモードとも呼ばれます。アプリケーションの一部として、データは同じJVMで実行されます。データ変換やネットワーク伝送を使用する必要がなく、ファイルモードで直接動作します。アクセス速度が速く、すべてのデータがファイルに書き込まれます。データベースを閉じた後も、データは保持されます。
ただし、このモードは現在のアプリケーションでのみ使用できます。アプリケーションを起動すると、他のアプリケーションはデータベースの内容にアクセスできなくなります。
- (2)データベースを作成または接続します
サーバーモードと比較すると、このメソッドは、DriverManagerを介して接続が取得されたときにデータベースを作成します。
Connection connection = DriverManager.getConnection("jdbc:hsqldb:file:user", user, password);
ここでのjdbc-urlは次のとおりです。dbc:hsqldb:file:path / databaseテーブル名。パスは、絶対パスと相対パスの両方をサポートできます。つまり、次のようになります。
jdbc:hsqldb:file:user:プロジェクトの現在のディレクトリにユーザーテーブルを作成します
"jdbc:hsqldb:file:db / user":プロジェクトの現在のディレクトリのdbディレクトリにユーザーテーブルを作成します
"jdbc:hsqldb:file:/ Users / j1 / Documents / java / db / user":ローカルディレクトリにユーザーテーブルを作成します
"Jdbc:hsqldb:res:org.my.path.resdb":この場合、Jarパッケージなどの一部のJavaリソースファイル内のデータベースは通常、読み取り専用です。このorg.my.pathは、resdbが配置されているパッケージパスです。
また、jdbc-urlの後にifexists = trueが指定されていない場合、接続されているデータベースが存在しないと、新しいデータベースが自動的に作成されます。ユーザー名とパスワードが指定されていない場合、デフォルトのSAと空のパスワードが使用されます。
3.メモリ(メモリのみ)モード
すべてのデータベースはメモリ内で完了し、プログラムが終了すると、対応するデータベースも同時に破棄されます。データベースを作成または接続する方法は、jdbc-urlが次のとおりであることを除いてプロセスモードと同じです。jdbc:hsqldb:mem:データベーステーブル名
4.まとめ
上記の3つのモードを使用して、データベース接続接続を取得し、接続からステートメントを取得してから、ステートメントを介してSQLステートメントを実行し、データベースの追加、削除、変更、およびクエリを実行できます。
4つのHSQLDBデータベースドライバー
HSQLDB JDBCドライバー(対応するクラス名:org.hsqldb.jdbcDriver)は、データベースファイルへのアクセスを提供するためにHsqldb.jarで提供されます。通常、デフォルトのポート番号は9001です。通常、.propertiesファイルを使用してこのクラスをプロジェクトに構成する必要があります
jdbc.driverClassName=org.hsqldb.jdbcDriver
jdbc.url=jdbc:hsqldb:hsql://localhost:9001/xbook
jdbc.username=sa
jdbc.password=
または、コードを介してJDBCドライバークラスを直接ロードします。
//1.初始化JDBC驱动
try {
Class.forName("org.hsqldb.jdbcDriver");
} catch (ClassNotFoundException e) {
System.out.println("ERROR:failed to load jdbc driver");
return;
}
次に、さまざまなデータベースのエンジンモードに従って、対応するjdbc-urlを使用してデータベースファイルにアクセスします。
5つのHSQLDBデータベースユーザー操作インターフェイス
もちろん、HSQLDBには、データベースの操作に役立つユーザー操作可能なインターフェイスもいくつか用意されています。
1.HSQLDBデータベースツールを構成します
org.hsqldb.util.DatabaseManagerとorg.hsqldb.util.DatabaseManagerSwingは、どちらも異なるインターフェースでデータベースを構成および管理できます。コマンドウィンドウ(現在サーバーモードでデータベースを作成している場合は、コマンドウィンドウを再度開いてコマンドを実行する必要があります)で、hsqldb.jarを実行してこれら2つのツールを直接開くことができます。その後、インターフェイスを使用できます。操作インターフェースがアップしています。通常、次の操作があります。
- (1)データベースエンジンモードの設定に応じて対応するタイプを選択する必要があり、URLの後に操作する必要のあるデータベースのエイリアスを設定します。
ここでユーザーとパスワードを設定するとエラーが報告されることに注意してください。後で、ユーザーとパスワードの設定方法を説明します。ユーザーのデフォルトはSAで、パスワードは空です。
- (2)SQLステートメントに精通している場合は、右側の入力ボックスに直接入力できます。SQLステートメントに精通していない場合は、Commonで提供されているテンプレートの例を使用するか、対応するものを右クリックします。 SQLステートメントを自動的に追加するテーブル。
- (3)SQLステートメントが正常に実行されると、次の図のように表示されます。
このツールを使用すると、データベースを簡単に追加、削除、変更、および確認できます。
2.その他のツール
公式APIドキュメントでは、次のツールも提供されています。
org.hsqldb.util.Transfer
org.hsqldb.util.QueryTool
org.hsqldb.util.SqlTool
6つの要約
上記の部分を通して、HSQLDBの基本的な知識を簡単に理解し、簡単に要約しました。
1. HSQLDBには、データベースエンジン、データベースドライバー、およびユーザー操作可能なインターフェイスツールが含まれています。
2. HSQLDBをインストールする必要はありません。公式ウェブサイトから最新の.zipをダウンロードし、解凍して、コンピューターの任意のディレクトリに配置するだけです。
3. HSQLDBデータベースエンジンは、サーバーモード、メモリモード、プロセスモードの3つのモードに分かれています。
(1)サーバーモードは、サーバーモード、Webサーバーモード、およびサーブレットモードに分割された別のJVMでデータベースを実行することです。
- サーバーモードはHSQLDB独自の通信プロトコルを使用し、対応するスタートアップクラスはorg.hsqldb.server、jdbc-url:jdbc:hsqldb:hsql:// localhost /データベースエイリアスです。
- WebServerモードは通信にHTTPを使用し、対応するスタートアップクラスはorg.hsqldb.server.WebServer、jdbc-url:jdbc:hsqldb:http:// localhost /データベースエイリアスです。
- サーブレットモードはWebServerモードに似ていますが、サーブレットモードではサーブレットコンテナのアプリケーションサーバーがデータベースにアクセスできる点が異なります。
(2)メモリモードでは、作成されたデータベースはメモリ内でのみ実行できます。アプリケーションを閉じると、対応するデータベースデータも破棄されます。データベースがConnectionを介して作成される場合、jdbc-urlは次のようになります。jdbc:hsqldb:mem:データベーステーブル名
(3)プロセスモードでは、作成されたデータベースはアプリケーションプロセスで実行され、データベースはファイルの形式で存在します。アプリケーションを閉じてもデータベースは存在しますが、アプリケーションの実行中は現在のアプリケーションのみが存在します。データベースにアクセスできますが、他のどれにもアクセスできません
4. HSQLDBは、データベースドライバーorg.hsqldb.jdbcDriverも提供します。これは、アプリケーションがHSQLDBデータベースファイルにアクセスできるように、コードまたは構成ファイルを介してロードできます。
5. HSQLDBは、ユーザー操作インターフェイスのDatabaseManagerとDatabaseManagerSwingも提供して、ユーザーがデータベースを操作できるようにします。2つの機能は同じですが、インターフェイスが異なります。
後で、ユーザー名とパスワードを設定する方法を見てみましょう。Javaインスタンスを介して、システムはデータベースへのアプリケーションアクセスのプロセスを確認します。Xiaobai初心者のWeb開発の簡単な要約(8)-データベースHSQLDBを参照してください。インスタンス