はじめに
今回はJavaの入門編としてJDBCについてマスターしていきます!JDBCを聞いたことが無い人や、聴いたことあるけど、なんか面倒くさそうだから飛ばちゃった。そんな人のためにこのページは書かれています。
ぜひ、JDBCを簡単にマスターしてプログラマーとして一歩先に行きましょう!
【ここで取り扱う・解決するSMTPへの疑問点】
Q.JDBCってなに?
では、そもそもJDBCって何なの?というところから紐解いていきましょう!
A. JDBCとは、JavaのAPI
JDBC(Java Database Connectivity)は、Javaプログラミング言語用のAPI(Application Programming Interface)です。このAPIを使用すると、Javaアプリケーションからデータベースにアクセスできます。JDBCを使用することで、異なるデータベースに対しても同じJavaコードを使ってアクセスすることができます。
JDBCを使用すると、以下のような手順でデータベースにアクセスできます:
- データベースに接続するためのドライバをロードします。
- データベースへの接続を確立します。
- SQLクエリを実行してデータベースに対して操作を行います。
- 必要に応じてトランザクションを管理します。
- データベースとの接続を閉じます。
以上がJDBCの軽い、説明です。
Q. APIってなに?
先ほどJDBCはAPIだと説明しました。でも、そもそもAPIって何?ってなりますよね?だし、ITを勉強していると、けっこーな頻度でAPIって耳にすると思います。ということで、今日の内にAPIとはなんなのかをしっかりと理解しておきましょう!
A. APIとはインタフェースのこと
そもそも、APIとはApplication Programming Interfaceの略です。つまり、文字通りインタフェースを意味します。
API(Application Programming Interface)は、プログラムやソフトウェアの機能やデータにアクセスするためのインターフェースです。つまり、他のプログラムがあるプログラムやサービスを使う際に、そのプログラムやサービスが提供する機能やデータにアクセスするための取っ掛けや手段です。
要するにAPIは、開発者が他のプログラムやサービスと連携するための架け橋(インタフェース)のような役割です。
Q.ドライバってなに?
では、今度はドライバについてみていきましょう!これもちょくちょく耳にする言葉ですよね?先ほどの解説でも「データベースに接続するためのドライバをロードします。」という文章がありました。ということで、次はドライバって何なの?っていうことを紐解いていきましょう!
A.ドライバとはコンパイラの様なもの
ドライバは、コンピュータシステム内で特定のハードウェアやソフトウェアを制御するためのプログラムやモジュールです。一般的には、ハードウェアやソフトウェアが提供する機能やインターフェースにアクセスするためのインターフェースを提供します。
【JDBCでの具体例】
JDBCドライバはJavaプログラムがデータベースと通信するための手段を提供します。これにより、Javaプログラムがデータベースに接続し、クエリを実行し、データを取得することができます。ドライバは、データベースの特定の種類やバージョンに対応するように設計されています。
【もっと簡単に言うと..】
Javaのアプリケーションはデータベースと直接通信はできません。でも、そんな時に仲介役となれるのがドライバです。イメージとしてはコンパイラを想像してください。
プログラミング言語とコンピュータでは直接やり取りできないけど、そこにコンパイラをはさむことで、プログラミング言語を機械語に翻訳して、それをコンピュータに実行させることができる。まぁざっとこんなイメージで十分でしょう!
JDBCもドライバも仲介役という意味では一緒です。
でも、JDBCは概念的な枠組みやAPIを指しています。そして、ドライバー概念的なものではなく、しっかりと目に見えるもので、実際にデータベースに接続し、JDBCの機能を実現するための具体的な実装を表しています。
要するに、概念的な枠組みがJDBC。具体的な実装がドラバ。以上の様な解釈で進めていきましょう!
Q. JDBCにおけるDAOってなに?
JDBCを勉強していると必ずと言っていいほど、DAOとDTOという単語を目にします。しかし、案外複雑な概念なので、挫折しちゃう人もいます。ということで、ここではDAOについてパッと理解していきましょう!
p.s.DTOはDAOの次に扱うので待っててください。
A. DAOっていうのはアクセサメソッドの様なもの
DAO(Data Access Object)は、データベースとのやり取りを抽象化し、データベースへのアクセスを管理するためのパターンまたは設計アプローチです。
簡単に言うと、DAOはデータベースにアクセスするための窓口のようなものです。プログラム内でデータベースにアクセスする際に、そのアクセスを一元化し、簡単に管理できるようにするための仕組みです。
【抽象化のメリット】
- アプリケーションとデータベースとの間に制御された空間を設けることができる
- 同じようなパターン化された処理をまとめられる(柔軟性と保守性)
【もっとわかりやすく言うと…】
イメージとしてはGetterメソッドやSetterメソッドなどのアクセサメソッドを頭に描いてください。アクセサメソッドは直接的にフィールドを操作できないようにするための窓口の様なものですよね?それと考え方は同じです。つまり、DAOとは直接データベースを操作できないようにするために、作られたメソッドだよ!ということです。
Q. JDBCにおけるDTOってなに?
お待たせしました。最後に、DTOを紐解いていきましょう!DTOは、よくDAOとセットで学習する内容です。それを今から見ていきましょう!
A.DTOとはデータに一貫性を持たせるもの
DTO(Data Transfer Object)はデータのかたまりみたいなもので、ある場所から別の場所にデータを渡す際に使います。
【DTOのメリット】
- データの整理と統一: DTOを使用することで、異なるレイヤーやコンポーネント間でデータを一貫した形式でやり取りすることができます。これにより、データの整理と統一が実現され、コードの可読性と保守性が向上します。
- データの軽量化: DTOを使うことで、必要なデータのみを含むオブジェクトを作成することができます。これにより、不要なデータの転送や処理を削減し、パフォーマンスを向上させることができます。
- レイヤー間の疎結合: DTOを使用することで、異なるレイヤー間でデータをやり取りする際に、それぞれのレイヤーが独立して変更されることが可能になります。つまり、あるレイヤーでの変更が他のレイヤーに影響を与えないようになり、システム全体の保守性と拡張性が向上します。
メリットだけではまだ、イメージできませんよね?ということで、次は逆にDTOを使わないとどうなってしまうのかを見ていきましょう!
【DTOを使わないと…..】
- データの不整合: レイヤーやコンポーネント間で直接データをやり取りする場合、データの形式や内容が一貫していないと、予期しないエラーが発生する可能性があります。
- 冗長なデータの転送: 必要のないデータが含まれている場合、不要なデータの転送や処理が発生し、パフォーマンスが低下する可能性があります。
- 依存性の増加: レイヤーやコンポーネントが直接的にデータを共有すると、それらの間で強い依存関係が生じる可能性があります。これにより、変更が難しくなり、システム全体の保守性が低下します。
以上の様な問題を解決するためにDTOがあります。
【まとめ】
DTOは通常、データを保持するフィールド(属性)のみを持ち、そのデータをアクセスするためのゲッター(getter)やセッター(setter)メソッドを含むことがありますが、その目的はデータの取得や設定にあります。つまり、DTOはデータの形式を管理するためのものであるということです。
形式に一貫性があれば受け渡しなどがスムーズに行えたりするなどの多くのメリットがあります。
そのため、DTOを実装するということは多々あります。
Q.DAOとDTOの違いって何?
DAOもDTOもカプセル化を実現する手段だということは分かりました。でも、それらの違いがよくわかりません…. そんな声が聞こえてくるようです。でも安心してください。以下ではっきりと明確な違いをまとめているので、そこでぜひスッキリと解決してください!
A.DAOとDTOは、カプセル化する対象が違う!
結論から言うと、DAOとDTOではカプセル化している対象が違います。
- DAO(Data Access Object): データベースとの通信をカプセル化し、アプリケーション内の他の部分からデータベースの詳細を隠蔽することで、不要なアクセスやデータの一貫性を確保します。DTOのように直接的なデータの取得や設定を行うわけではありませんが、その考え方を取り入れてデータベースアクセスの方法をカプセル化します。
- DTO(Data Transfer Object): データのフィールドとそれに対するアクセスをカプセル化します。そして、それを実現するのがGetterメソッドやSetterメソッドです。DTOはデータの転送や受け渡しを担当し、外部からの直接アクセスを防ぎ、データの整合性を保つ役割を果たします。
つまり、DAOはデータベースとの通信をカプセル化し、DTOはデータのフィールドとそれに対するアクセスをカプセル化します。で、DTOは実際にGetterメソッドやSetterメソッドを定義します。それに対して、DAOはGetterメソッドやSetterメソッドの考え方が採用された、メソッドを提供しています。
だから、機能的にはほぼ、同じだけど対象がちょっと違うから呼び方を変えているだけって感じですね。
JDBCのまとめ
JDBC(Java Database Connectivity)は、Javaプログラミング言語用のAPIであり、データベースとの接続や操作を可能にします。JDBCを使用することで、Javaアプリケーションからデータベースにアクセスし、SQLクエリを実行することができます。
基本的な手順は、ドライバのロード、データベースへの接続、SQLクエリの実行、トランザクション管理、接続のクローズです。
JDBCを使うことで、異なるデータベース間での一貫(DAO&DTOなど)したアクセスが可能になり、安全かつ効率的なデータベース操作が実現されます。
おわりに
お疲れさまでした!今日はJDBCについてマスター&Studyしました。
疑問を持ち、それを一つずつ紐解いていくことで、いつの間にか多くの知識が身についていたんです。気が付きましたか?たった、数分であなたは知識を爆発的に増やしました!
これからも、今日みたいにヌルっと気づいたら知識が増えてた!みたいなStudyを一緒にしていきましょう!
本日はここで、終わります。ありがとうございました。またお会いしましょう!では、さらばじゃ!
【この記事も一緒に読まれています】