top 25 jdbc interview questions
このチュートリアルでは、よくあるJDBC面接の質問と回答、および面接の準備に役立つ説明を提供します。
の中に JDBCバッチ処理とストアドプロシージャ のチュートリアル JDBCチュートリアルシリーズ 、JDBCドライバーを使用してJavaでバッチ処理を行う方法を学び、ストアドプロシージャを作成してJavaプログラムから呼び出す方法も学びました。
JDBCは、Java DatabaseConnectivityで一般的に使用される短縮形です。 JDBCを使用することで、Oracle、MySQL、MSAccessなどのさまざまなタイプのリレーショナルデータベースと対話できます。
この記事は、JDBCインタビューをクラックするのに役立ちます。ここでは、JDBCの重要な概念をすべて説明しました。
よくあるJDBCインタビューの質問
Q#1)JDBCとは何ですか?
回答: Java Database Connectivityは、非公式にはJDBCとして知られています。これは、JavaアプリケーションからデータベースでDB操作を実行するために使用されます。 Oracle、MySQL、MSAccessなどのあらゆる種類のDBとの相互作用をサポートします。
Q#2)JDBCドライバーの用途は何ですか?
回答: これはソフトウェアコンポーネントであり、Javaアプリケーションがデータベースと対話するために使用されます。
Q#3)JDBCのさまざまなタイプのドライバーは何ですか?
回答: 市場には4つの異なるJDBCドライバーがあります。
彼らです:
- タイプI: JDBC –ODBCブリッジ
- タイプII: ネイティブAPI–ハーフJavaドライバー
- タイプIII: ネットワークプロトコル–完全にJavaドライバー
- タイプIV: シンドライバー-完全にJavaドライバー
タイプI:JDBC-ODBCブリッジ
JDBC-ODBCブリッジは、クライアントとDBサーバー間のインターフェイスとして動作します。クライアントは、JDBC-ODBCドライバーをその中に配置する必要があります。データベースはODBCドライバーをサポートする必要があります。クライアントシステム内でのドライバーのインストールが気にならない場合は、このドライバーを使用します。
タイプII:ネイティブAPI:ハーフJavaドライバー
これは、JDBC-ODBCドライバーのようなものです。ここでは、ODBCドライバーではなく、ネイティブAPIを使用しています。クライアント側データベースのライブラリが使用されます。
タイプIII:ネットワークプロトコル
これは、データベースにアクセスするための3層アプローチのように機能します。 DBへの接続には中間サーバーが使用されます。 JDBCメソッド呼び出しは、中間サーバーにデータを送信し、サーバーはDBと通信します。
タイプIV:シンドライバー
それは絶対にJavaで書かれています。 JDBCメソッド呼び出しをベンダー固有のデータベースプロトコルに明示的に変換します。現在、データベースマーチャント自体が、このタイプのドライバーを顧客に提供しています。したがって、プログラマーは他のソースに依存しません。他のドライバーよりも高いパフォーマンスを提供します。
Q#4) ほとんどの人が使用しているJDBCドライバーのタイプはどれですか?
回答: タイプIVシンドライバーは、ほとんどのアプリケーションで使用されます。これはデータベースベンダー自身によって開発されているため、開発者は他のソースに依存することなく直接使用できます。シンプルで簡単な開発が可能です。他のドライバーよりも高いパフォーマンスを提供します。
Q#5)JDBCアーキテクチャのタイプは何ですか?
回答: JDBCは、DBにアクセスするための2種類の処理モデルをサポートしています。
彼らです:
- 2層アーキテクチャ: ここで、Javaプログラムは明示的にDBに接続します。 JDBCドライバーを除いて、DBに接続するためにアプリケーションサーバーのようなメディエーターは必要ありません。これは、クライアントサーバーアーキテクチャとも呼ばれます。
- 3層アーキテクチャ: これは、2層アーキテクチャの完全な逆です。 JDBCドライバーまたはJavaプログラムとデータベースの間には明示的な通信はありません。アプリケーションサーバーは、それらの間の仲介役として使用されます。 Javaプログラムは要求をアプリケーションサーバーに送信し、サーバーはそれを送信してDBとの間で応答を受信します。
Q#6)JDBCのコンポーネントは何ですか?
回答: JDBCで使用できる4つの主要なコンポーネントがあります。
彼らです:
- JDBC API
- JDBCドライバーマネージャー
- JDBCテストスイート
- JDBC –ODBCブリッジ
Q#7)JDBCに接続する手順は何ですか?
回答: JavaでDBに接続するための6つの基本的な手順があります。 これらは以下に参加しています:
- パッケージのインポート
- ロードドライバー
- 接続を確立する
- ステートメントの作成と実行
- 結果を取得する
- 接続を閉じる
Q#8)データベーステーブルに画像とファイルを保存するために使用されるデータ型はどれですか?
回答:
- BLOBデータ型 画像をDBに保存するために使用されます。ビデオとオーディオもBLOBデータ型で保存できます。バイナリタイプのデータを格納するために使用されます。
- CLOBデータ型 ファイルをDBに保存するために使用されます。データの文字タイプを格納するために使用されます。
Q#9)JDBCのDriverManagerとは何ですか?
回答: DriverManagerは、java.sqlパッケージに含まれている組み込みクラスです。これは、コードで接続/使用しているJavaアプリケーションとDBの間のメディエーターとして使用されます。最初のステップとして、DriverManagerにドライバーを登録またはロードする必要があります。これで、ドライバーをアプリケーションで使用できるようになります。
DriverManagerの主な機能は、データベースのドライバークラスをロードし、DBとの接続を作成することです。
ドライバを登録またはロードするには、次の2つの方法があります。
- Class.forName()
- DriverManager.registerDriver()
Q#10)StatementインターフェースとPreparedStatementインターフェースの違いは何ですか。
回答:以下の表で違いを説明します。
ステートメント | プリペアドステートメント |
---|---|
これは主に静的SQLステートメントの実行に使用されます | これは主に、コンパイル済みのSQLステートメントを実行するために使用されます |
実行時にパラメータを受け入れません | 実行時にさまざまなパラメータを受け入れます |
そのパフォーマンスはpreparedStatementと比較して劣ります | プリコンパイルされたSQLステートメントを実行しているため、そのパフォーマンスはステートメントよりも高くなります。 |
CREATE、DROP、ALTER、TRUNCATEなどのDDLステートメントの実行に適しています | INSERT、UPDATE、DELETEなどのDMLステートメントの実行に適しています |
DBでの画像とファイルの保存または取得には使用できません | DBで画像やファイルを保存または取得するために使用できます |
SQLインジェクションを実施します | SQLインジェクションを防ぎます |
推奨読書= >> JDBCプリペアドステートメントとステートメント
Q#11) execute()、executeQuery()、executeUpdate()の違いを説明してください。
回答:
executeQuery() | executeUpdate() | Execute() |
---|---|---|
DBから一部のデータを取得するSQLステートメントを実行するために使用されます | DB内のデータを更新または変更するSQLステートメントを実行するために使用されます | あらゆる種類のSQLステートメントを実行するために使用されます |
resultSetオブジェクトを返します | 番号を表す整数値を返します。影響を受ける行の | ブール値を返します TRUE –resultSetオブジェクトを返します FALSE –int値または何も返しません |
SELECTクエリのみを実行するために使用されます | SELECT以外のクエリのみを実行するために使用されます | SELECTクエリと非SELECTクエリの両方を実行するために使用されます |
Q#12)JDBCでストアドプロシージャを呼び出す方法は?
回答: CallableStatementインターフェイスを介してSQLストアドプロシージャを実行できます。 CallableStatementオブジェクトは、ConnectionインターフェースのprepareCall()メソッドを使用して作成できます。
Q#13) ResultSetインターフェースとは何ですか?
回答: ResultSetインターフェイスは、SQLクエリの実行後に出力データを格納するために使用されます。 ResultSetのオブジェクトは、結果データにカーソルポイントを維持します。デフォルトでは、カーソルは結果データの最初の行の前を指します。結果セットオブジェクトのデータをトラバースすることもできます。
さまざまなブラウザで自分のサイトをテストする
構文:
ステートメントインターフェイス:
Statement stmnt1 = conn.createStatement(); ResultSet resultset = stmnt1.executeQuery(“Select * from EMPLOYEE”);
PreparedStatementインターフェース:
PreparedStatement pstmnt1 = conn.prepareStatement(insert_query); ResultSet resultset = pstmnt1.executeQuery(“Select * from EMPLOYEE”);
Q#14)ResultSetのタイプは何ですか?
回答: ResultSetには3つのタイプがあります。これらは:
さまざまなブラウザでウェブサイトをテストする方法
- TYPE_FORWARD_ONLY: これはデフォルトのオプションです。カーソルが最初から最後まで移動します。
- TYPE_SCROLL_INSENSITIVE: このタイプでは、カーソルは順方向と逆方向の両方に移動します。 SQLクエリがデータを返すとき、データセットにはデータがあります。
- TYPE_SCROLL_SENSITIVE: これはTYPE_SCROLL_INSENSITIVEと同じですが、結果セットオブジェクトの反復中に更新されたデータが含まれる点が異なります。
Q#15)ResultSetの並行性モードとは何ですか?
回答: ResultSetには2つの異なる並行性モードがあります。彼らです:
- ResultSet.CONCUR_READ_ONLY :これはデフォルトの同時実行モードです。読み取り専用オプションが利用可能です。更新はできません。
- ResultSet.CONCUR_UPDATABLE: 更新が可能です。
Q#16)データベースが同時実行モードをサポートしているかどうかを確認するにはどうすればよいですか?
回答: 指定されたタイプと同時実行モードがデータベースでサポートされているかどうかを確認するために使用されるsupportsResultSetConcurrency()メソッドがあります。
Q#17) 結果セットから特定の行のデータを取得できますか?
注意: ResultSetには、一連の行のデータがあります
回答: はい、relative()メソッドを使用してresultSetから特定の行のデータを取得できます。現在の行から順方向または逆方向にカーソルを指定された行に移動します。正の値が指定されている場合は、順方向に移動します。負の値が指定されている場合は、逆方向に移動します。
Q#18)ResultSetのgetterメソッドとsetterメソッドの用途は何ですか?
回答:
ゲッターメソッド: これらは、ResultSetからテーブルの特定の列の値を取得するために使用されます。列インデックス値または列名のいずれかをパラメーターとして渡す必要があります。通常、getterメソッドをgetXXX()メソッドとして表します。
例:
- int getInt(string Column_Name): これは、指定された列Indexおよびintデータ型の値を戻り値の型として取得するために使用されます。
セッターメソッド: ResultSetセッターメソッドを使用してデータベースに値を設定できます。 getterメソッドに似ていますが、ここでは、データベースに挿入する特定の列の値/データと、その列のインデックス値または列名を渡す必要があります。通常、setterメソッドをsetXXX()メソッドとして表します。
例:
- void setInt(int Column_Index、int Data_Value): これは、指定された列Indexの値をint値で挿入するために使用されます。
Q#19)ResultSetMetaDataインターフェースの主な目的は何ですか?
回答: このインターフェースは、ResultSetに関する詳細情報を提供します。各ResultSetオブジェクトは、1つのResultSetMetaDataオブジェクトに関連付けられています。
このオブジェクトには、列のデータ型、列名、そのテーブルの列数、テーブル名、スキーマ名など、列のプロパティの詳細が含まれます。ResultSetオブジェクトのgetMetaData()メソッドを使用して、 ResultSetMetaDataオブジェクト。
構文:
PreparedStatement pstmntobj = conn.prepareStatement(insert_query); ResultSet resultsetobj = pstmntobj.executeQuery(“Select * from EMPLOYEE”); ResultSetMetaData rsmd obj= resultsetobj.getMetaData();
Q#20)DatabaseMetaDataとは何ですか?
回答: DatabaseMetaDataインターフェースは、使用しているデータベースに関する情報を提供します。次の情報を取得します– DatabaseName、データベースバージョンなど。
Q#21)ACIDプロパティとは何ですか?
回答:
- A–原子性-> すべてのクエリが正常に実行された場合、データはコミットされます。それ以外の場合はコミットされません。
- C-一貫性-> データは、トランザクション後も一貫している必要があります。
- I–分離-> 各トランザクションは分離する必要があります。
- D–耐久性-> トランザクションが一度コミットされた場合、それは常に利用可能である必要があります(変更が発生していない場合)
Q#22)自動コミットモードの値を変更するにはどうすればよいですか?
回答: デフォルトでは、AutoCommitの値はTRUEです。 SQLステートメントの実行後、自動的にコミットされます。 setAutoCommit()メソッドを使用して、値をAutoCommitに変更できます。
Q#23)CommitメソッドとRollbackメソッドの使用は何ですか?
回答:
Commit()メソッド: データをコミットするためのJavaのcommit()メソッドがあります。 SQLの実行が完了すると、commitメソッドを呼び出すことができます。
構文: connectionobj.commit();
Rollback()メソッド: Javaには、データをロールバックするためのrollback()メソッドがあります。ロールバックとは、変更を元に戻すことを意味します。 SQLステートメントのいずれかが失敗した場合は、rollbackメソッドを呼び出して変更を元に戻すことができます。
構文: connectionobj.rollback();
Q#24)セーブポイントとは何ですか?また、セーブポイント用にJDBCにあるメソッドは何ですか?
回答: セーブポイントは、トランザクションでチェックポイントを作成するために使用され、特定のセーブポイントへのロールバックを実行できるようにします。トランザクションがコミットまたはロールバックされると、トランザクション用に作成されたセーブポイントは自動的に破棄され、無効になります。
セーブポイントの方法:
- setSavepoint()メソッド: これはセーブポイントの作成に使用されます。rollback()メソッドを使用して、セーブポイントまでのすべての変更を元に戻すことができます。
- releaseSavepoint()メソッド: 指定されたセーブポイントを削除するために使用されます。
Q#25)SQLExceptionに該当する例外をいくつか挙げてください。
回答:
- SQLNonTransientException
- SQLTransientException
- SQLRecoverableException
>>クリック ここに 上記の例外の詳細については。
Q#26)バッチ処理とは何ですか?JDBCでそれを行う方法は?
回答: バッチ処理は、1つのトランザクションで複数のSQLステートメントを実行するプロセスです。そうすることで、通信時間が短縮され、パフォーマンスが向上します。大量のデータの処理がはるかに簡単になります。
バッチ処理の利点:
- 性能を上げる
- データの整合性
バッチ処理の実行方法:
バッチ処理を実行するために、JavaにはaddBatch()メソッドとexecuteBatch()メソッドがあります。これらの2つのメソッドは、StatementクラスとPreparedStatementクラスにあります。
Q#27)ストアドプロシージャとは何ですか?
回答: 特定のタスクを実行するために単一のユニットとして実行されるSQLクエリのグループは、ストアドプロシージャと呼ばれます。 3種類のパラメータを渡すことができます。各プロシージャはその名前で表されます。したがって、プロシージャの名前は一意である必要があります。
>>ストアドプロシージャの詳細については、こちらを参照してください リンク 。
Q#28)ストアドプロシージャのパラメータタイプは何ですか?
回答: ストアドプロシージャで使用できるパラメータには3つのタイプがあります。彼らです:
- に: 入力値をプロシージャに渡すために使用されます。
- アウト: プロシージャから値を取得するために使用されます。
- IN / OUT: 入力値を渡し、プロシージャとの間で値を取得するために使用されます。
結論
これらは、基本レベルと上級レベルの両方をカバーするJDBCインタビューの質問です。このチュートリアルでJDBCの概要がわかることを願っています。上記の説明は、知識を豊かにし、JDBCの理解を深めます。ではごきげんよう!!!