Spring jdbc のデータベース操作オブジェクト モデルの詳細な例

Spring jdbc のデータベース操作オブジェクト モデルの詳細な例

Spring jdbc のデータベース操作オブジェクト モデルの詳細な例

Spring Jdbc データベース操作のオブジェクト化

オブジェクト指向メソッドを使用してリレーショナル データベース操作を表現し、スレッドセーフで再利用可能なオブジェクト モデルを実装します。最上位の親クラス インターフェイスは RdbmsOperation です。

SqlOperation はこのインターフェイスを継承して、選択、更新、呼び出しなどのデータベース操作を実装します。

1. クエリインターフェース: SqlQuery

1) GenericSqlQuery、UpdatableSqlQuery、MappingSqlQueryWithParameter

2) SqlUpdate、バッチSqlUpdate

3) SQLコール

1) データベース操作 select をオブジェクトとしてカプセル化します。クエリ操作の基本クラスは SqlQuery です。すべてのクエリはこのクラスで表すことができます。Spring JDBC では、結果セットを Java オブジェクトにマッピングするための、より使いやすい MappingSqlQueryWithParameters と MappingSqlQuery も提供されています。クエリ オブジェクト クラスには、UpdatableSqlQuery と SqlFunction という 2 つの拡張機能も用意されています。

2) 追加、削除、変更操作では、データベース操作の挿入、更新、削除をオブジェクトとしてカプセル化します。追加、削除、変更操作の基本クラスは SqlUpdate です。もちろん、バッチ処理用の BatchSqlUpdate も提供されています。

3) ストアド プロシージャと関数の呼び出しはオブジェクトとしてカプセル化されます。基本クラスは SqlCall クラスで、StoredProcedure 実装を提供します。

データベース接続

JDBC:

Spring jdbc は DataSource を介してデータベース接続を制御します。つまり、その実装サブクラスを介してデータベース接続が取得されます。

1) DriverManagerDataSource: DriverManager.getConnection() の単純なカプセル化

2) SingleConnectionDataSource: 接続を内部的にカプセル化し、閉じられず、複数のスレッドで使用できないため、テストに使用されます。

3) LazyConnectionDataSourceProxy: DataSource をカプセル化し、データベース接続の取得を遅らせるために使用されます。接続は、Statement が実際に作成されたときにのみ取得されます。したがって、実際のプロジェクトでは、最終的にプロキシを使用して元の DataSource をラップし、本当に必要なときにのみ接続が取得されるようにします。

ベンダー:

提供される DataSource 実装には、主に C3P0/Proxool/DBCP/ などが含まれます。これらの実装はすべて、データベース接続プール機能を備えています。

DataSourceUtils: Spring JDBC 抽象フレームワークは、getConnection(DataSource dataSource) メソッドを通じてデータベース接続を取得し、releaseConnection(Connection con, DataSource dataSource) はデータベース接続を解放するために使用され、DataSourceUtils は Spring 管理トランザクションをサポートするために使用されます。DataSourceUtils を使用して取得された接続のみが Spring 管理トランザクションを持ちます。

Spring JDBC は、DaoSupport 抽象クラスを通じて一貫したデータベース アクセスを提供します。

1) JdbcDaoSupport: 一貫したJdbcTemplateアクセスをサポート

2) NamedParameterJdbcDaoSupport: NamedParameterJdbcTemplateへのアクセスを提供するJdbcDaoSupportのサブクラス

3) SimpleJdbcDaoSupport: SimpleJdbcTemplate アクセスを提供する JdbcDaoSupport サブクラス

JdbcTemplate、NamedParameterJdbcTemplate、および SimpleJdbcTemplate クラスは、接続の取得と解放に DataSourceUtils を使用し、接続はスレッドにバインドされるため、これらの JDBC テンプレート クラスはスレッドセーフです。つまり、JdbcTemplate オブジェクトは複数のスレッドで再利用できます。

ご質問がありましたら、メッセージを残すか、コミュニティに参加して話し合いましょう。お読みいただきありがとうございます。お役に立てれば幸いです。このサイトをサポートしていただき、ありがとうございます。

以下もご興味があるかもしれません:
  • IntelliJ IDEA で Python プラグインをインストールして実行する方法
  • Intellij IDEA のインストールと lombok プラグインの使用
  • IntelliJ IDEA ホットデプロイメントプラグイン JRebel の使用
  • IntelliJ IDEA のショートカットキーを促す Key Promoter X プラグインを推奨します
  • Javaプログラマーにとって必須のIntellij IDEAプラグイン
  • IntelliJ IDEA JRebel のインストールと使用方法のグラフィック チュートリアル (ホット デプロイメント プラグイン)
  • Intellij IDEA プラグイン開発入門
  • Intellij Idea プラグイン開発: プロジェクトレベルの右クリック メニューの作成
  • IntelliJ IDEA 2017.2.5 x64 の Spring Initializr プラグインを使用して、Spring Boot/Cloud プロジェクトをすばやく作成します (図)
  • IntelliJ IDEA プラグインのインストールと使用方法の詳細な説明 (図解)
  • IntelliJ IDEA に Vue 開発プラグインをインストールする方法
  • IntelliJ IDEA の .ignore プラグインを使用して、送信された不要なファイルを無視する方法の詳細な説明
  • Intellij IDEA 構成 Subversion プラグイン実装手順の詳細な説明
  • Spring Boot 実践データベース操作サンプルコード
  • Springboot データベース操作のグラフィックチュートリアル
  • Spring Boot Mysql データベース操作例
  • IntelliJ IDEA プラグイン EasyCode を使用して Spring Boot でワンクリックでコードを生成する詳細な方法

<<:  Linuxでスワップパーティションファイルを作成する方法

>>:  Vueプロジェクトでパラメータジャンプ機能を実装する

推薦する

docker によってプルされたイメージがどこに保存されるかの詳細な説明

20200804追記:記事の内容に誤りがある可能性があります。他の回答を検索することもできます。 d...

MySQL 5.7.18 でパスワードを変更する方法

MySQL 5.7.18 でパスワードを変更する方法: 1. まずMySQLサーバーをシャットダウン...

https暗号化アクセス用にnginxを設定するための詳細なチュートリアル

環境: 1 CentOS Linux リリース 7.5.1804 (コア)ファイアウォールと sel...

Tomcat9 Windows サービスのインストールに関する詳細なチュートリアル

1. 準備1.1 service.bat を含む tomcat 圧縮パッケージをダウンロードします。...

VmWareでcentos7をインストールするときにインターネットにアクセスできない問題の解決策

Centos7 のインストール時に VmWare がインターネットにアクセスできない場合はどうすれば...

Vue.jsは背景テーブルコンポーネントのカプセル化を管理します

目次問題分析なぜカプセル化なのかパッケージの内容は何ですか?テーブルコンポーネントをカプセル化するデ...

MySQLフィールドのデフォルト値を設定する方法

目次序文: 1. デフォルト値に関する操作2. 使用上の提案要約:序文: MySQL では、テーブル...

初心者向けウェブサイト構築チュートリアルの概要

これら 6 つの記事を書いた後、私は少し混乱し始めました。次にどこに書けばいいのか分かりません。ドメ...

Sitemesh チュートリアル - ページ装飾技術の原理と応用

1. 基本概念1. Sitemeshはページ装飾技術です。 1 : フィルターを通してページアクセス...

JS でパブリッシュ サブスクライブ モデルを作成する

目次1. シーン紹介2 コードの最適化2.1 ファンを増やす問題を解決する2.2 作品追加の問題を解...

CSS3+HTML5+JSでブロックの縮小・拡大アニメーション効果を実現

最近、あるプロジェクトに取り組んでいたとき、自分のプロジェクトでは CSS3 のアニメーション技術を...

Linux での Redis の永続性、マスター スレーブ同期、Sentinel の詳細な説明

1.0 Redis の永続性Redis はメモリ内データベースです。サーバー プロセスが終了すると、...

Linux での MySQL のインストールに関するチュートリアル

目次1. 古いバージョンを削除する2. サーバーのカーネルタイプを確認し、適切なバージョンをダウンロ...

CSS3 は下部に固定されたフッターを実装します (ページの高さに関係なく常に下部にあります)

序文フッター領域を下部に固定します。ページの高さや幅に関係なく、モバイル メニューと同様に、フッター...

CSS3 で @media を使用して Web ページの適応を実現するためのサンプル コード

現在、コンピュータモニターの画面解像度はますます高くなる傾向にありますが、携帯電話などのモバイルデバ...