20の最も一般的なHibernateインタビューの質問と回答[新入生および経験者向け]

公開: 2020-12-31

長い間、Javaは最も人気のあるプログラミング言語リストでトップランクの位置を占めてきました。 当然のことながら、世界中の開発者に好まれる優先度の高いプログラミング言語であるJavaには、ツール、ライブラリ、およびフレームワークの膨大なコレクションが付属しています。 この投稿では、人気のあるJavaフレームワークであるHibernateについて説明します。

Javaを使用したり、使用したりする人は誰でも、Hibernateとその機能をよく知っています。 ただし、この名前に出くわしたばかりの皆さん、つまり休止状態の場合は、それを分解してみましょう。

目次

Hibernateとは何ですか?

Hibernateは、Java専用に設計されたORM(オブジェクトリレーショナルマッピング)ツールです。 つまり、オブジェクト指向モデルをリレーショナルデータベースにマッピングするのに役立つフレームワークを提供します。 Hibernateは主に、Javaクラスからデータベーステーブルへのマッピングと、Javaデータ型からSQLデータ型へのマッピングに重点を置いています。

Hibernateは、データクエリおよび取得サービスも拡張します。 これはJavaで記述されており、JVMベースです。 Hibernateは、Java Persistence APIのリファレンス実装を提供します。これにより、ORM(Object Relational Mapping)に最適です。 CRUD操作にHibernate永続性APIを使用できます

もともと、Hibernateは、EJB2(Enterprise Java Beansバージョン2)のよりシンプルで優れた代替手段として機能するように設計されていました。 今日、HibernateはJavaアプリケーションで最も広く使用されているORMツールの1つであることを誇っています。

これは、データベース操作用のJavaベースのエンタープライズアプリケーションの開発に広く使用されています。 また、HibernatePersistenceAPIはCRUD操作に最適です。

Hibernateの背景知識が得られたので、これらのX Hibernateインタビューの質問を使用して、このORMツールについてもう少し詳しく理解しましょう。

世界のトップ大学からのソフトウェア開発コースに登録します。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

Hibernateインタビューの質問と回答

1.ORMとは何ですか?

ORM(Object Relational Mapping)は、データベースに格納されているデータを使用してオブジェクトをマッピングする手法を指します。 ORMの目的は、データの作成、データへのアクセス、およびデータの操作を簡素化することです。

2.JPAとは何ですか?

Java Persistence API(JPA)は、標準と機能をORMツールに割り当てる仕様です。 javax.persistenceパッケージからJPAクラスとインターフェースにアクセスできます すべてのJPA仕様は、javax.persistenceパッケージのアノテーションを使用して定義されています。 JPAアノテーションを使用する利点は、実装に依存しないコードを記述できることです。

3.Hibernateマッピングに使用される重要なJPAアノテーションは何ですか?

Hibernateは、org.hibernate.annotationsパッケージを介してアクセスできる他の多くのアノテーションとともにJPAアノテーションをサポートします。 最も重要なJPAアノテーションの7つを次に示します。

javax.persistence.Entity –モデルクラスと組み合わせて、エンティティBeanとして宣言するために使用されます。

javax.persistence.Table –データベース内の対応するテーブル名を定義するためにエンティティBeanとともに使用されます。

javax.persistence.Access –アクセスタイプ、フィールド、またはプロパティを指定するために使用されます。 この注釈のデフォルト値はfieldです。

javax.persistence.Id –エンティティBeanの主キーを定義します。

javax.persistence.EmbeddedId –エンティティBeanの複合主キーを指定するために使用されます。

javax.persistence.Column –データベーステーブルの列名を指定します。

javax.persistence.GeneratedValue –主キーを生成するために必要な戦略を定義します。

4.HQLを定義する

HQLはHibernateQueryLanguageの略です。 これは、データベースに依存しないオブジェクト指向のクエリ言語です。

5.Hibernateでマッピングをどのように実行しますか?

Hibernateのアソシエーションマッピング機能は、リレーショナルデータベースモデルと同じように、4つの標準アソシエーションをサポートすることでマッピングを容易にします。

  • 1対1の関連付け
  • 1対多の関連付け
  • 多対1の関連付け
  • 多対多の協会

これらの各関連付けは、単方向または双方向の関連付けとしてマッピングできます。

6.Hibernateのメインインターフェイス/コンポーネントに名前を付けます。

Hibernateには、Configuration、SessionFactory、Session、Query、Criteria、およびTransactionの6つのコアインターフェイスがあります。

7.HibernateでSQLクエリを作成できますか?

はい、HibernateでSQLクエリを作成できます。 SQLクエリを作成するには、次の構文を使用する必要があります。

Session.createSQLQuery

8.Hibernate構成ファイルとは何ですか?

Hibernate構成ファイルには、データベース固有の構成が格納されます。 これは、SessionFactoryインターフェースを初期化するために使用されます。 このファイルには、Hibernateがデータベースタイプやマッピングファイル/クラスの詳細を知ることができる方言情報など、その他の関連情報も含まれています。

9.永続クラスとは何ですか?

Hibernateでは、オブジェクトとインスタンスがデータベースクラスに格納されているクラスは永続クラスと呼ばれます。

10.セッションの定義

セッションインターフェイスは、HibernateとJavaアプリケーション層の間にあります。 これは主にデータベース操作を実行するために使用されます。 セッションは、Hibernateアプリとデータベース間の接続を確立および維持するのに役立ちます。 永続オブジェクトの作成、読み取り、更新、および削除操作を実行するためのさまざまなメソッドを提供します。

また、SessionはQuery、Criteria、Transactionのファクトリのように機能します。つまり、ファクトリメソッドを拡張してこれらのインスタンスを返します。 Sessionオブジェクトを使用して、基準を作成し、HQLクエリとSQLネイティブクエリを実行できます。

11.SessionFactoryを定義します。

Hibernateでは、SessionFactoryはSessionオブジェクトにアクセスするために使用されるファクトリクラスです。 Hibernate構成パラメーターを読み取り、データベースに接続してSessionオブジェクトをフェッチします。 SessionFactoryは本質的にSessionのファクトリであり、Sessionのインスタンスを提供します。

SessionFactoryが作成されると、その内部状態が固定され、不変になります。 SessionFactoryの内部状態には、オブジェクト/リレーショナルマッピングの完全なメタデータが含まれています。

12.Hibernate構成ファイルとHibernateマッピングファイルを区別します。

Hibernate構成ファイルには、データベース固有の構成と方言情報が含まれています。 SessionFactoryを初期化するために使用されます。 Hibernate構成XMLファイルからデータベースクレデンシャルまたはJNDIリソース情報にアクセスできます。

一方、Hibernateマッピングファイルは、データベーステーブルの列マッピングとエンティティBeanフィールドを定義するために使用されます。 マッピングファイルは、すべてのHibernateアプリのコアです。 これには、POJOクラス名からテーブル名へのマッピングと、POJOクラス変数名からテーブル列名へのマッピングが含まれています。

13.POJOとは何ですか?

POJOは、Plain OldJavaObjectの頭字語です。 基本的に、POJOは、個々のプロパティの標準のgetterメソッドとsetterメソッドを使用して設計されたJavaBeanです。 Javaクラスの代わりにPOJOを使用する利点は、クリーンで正確かつ効率的なコードを記述できることです。

14.Hibernate構成オブジェクトの主要コンポーネントに名前を付けます。

Hibernate構成オブジェクトには2つの主要なコンポーネントがあります

  1. 1つ以上の構成ファイルによって管理されるデータベース接続。
  2. Javaクラスとデータベーステーブル間の接続を確立するために使用されるクラスマッピング設定。

15.Hibernate方言とは何ですか?

Hibernate Dialectは、使用するデータベースのタイプを指定します。 これにより、Hibernateはこの情報を事前に知って、優先/指定されたデータベースタイプに最適な適切なSQLステートメントを生成できます。

16.「休止状態のキャッシュ」を定義します。

Hibernateキャッシングは、Hibernateアプリケーションの速度とパフォーマンスを向上させるためにデータをクエリするプロセスです。 目的は、データベースクエリの数を最小限に抑え、スループット時間を短縮することです。

EHCacheはHibernateのデフォルトのキャッシュ機能です。

17.第1レベルと第2レベルのキャッシュとは何ですか?

Hibernateでは、第1レベルのキャッシュはセッションキャッシュを指します。 これは、すべてのリクエストが通過する必要のある必須のキャッシュです。 2番目のキャッシュは、セッション全体でオブジェクトをキャッシュするオプションのキャッシュです。

事前収集およびクラスごとに基づいて、第2レベルのキャッシュを構成できます。 原則として、第2レベルのキャッシュでオブジェクトを検索する前に、第1レベルのキャッシュを参照する必要があります。

18.オブジェクト/エンティティBeanのさまざまな段階を説明します。

オブジェクト/エンティティBeanインスタンスは通常、次の3つのフェーズのいずれかに存在します。

  • 一時的–このフェーズでは、オブジェクトが永続化したり、セッションに関連付けられたりすることはありません。 save()、persist()、またはsaveOrUpdate()関数を使用して、一時的なインスタンスを永続的に変換できます。 永続インスタンスを一時的なものに戻すには、delete()コマンドを使用できます。
  • 永続的–オブジェクトは、一意のセッションに関連付けられると永続的な状態になります。 get()またはload()関数によって返されるすべてのインスタンスは永続的な状態です。
  • デタッチ–永続オブジェクトがどのセッションにも関連付けられていない場合、デタッチ状態になります。 デタッチされたインスタンスは、update()、saveOrUpdate()、lock()、またはreplicate()関数を介して永続に変換できます。

19.Hibernateでのダーティチェックの目的は何ですか?

Hibernateの自動ダーティチェック機能は、トランザクションで変更されたオブジェクトに対してupdateステートメントを自動的に呼び出すため、開発者は時間のかかる書き込みアクションを回避できます。

ダーティチェックは、他のフィールドを変更せずに、アクションが必要なフィールドのみを変更/更新します。 全体として、データベースの書き込み時間が短縮されます。

20.「トランザクション管理」を定義します。

トランザクション管理はSpringフレームワークの機能です。 これは基本的に、一連のコマンド/ステートメントを管理するプロセスです。 Hibernateでは、トランザクションインターフェイスは、トランザクション実装(JTA、JDBC)からの抽象化を維持することによってトランザクション管理を実行します。 session.beginTransaction()メソッドを呼び出すことにより、トランザクションを開始できます

また読む:Javaインタビューの質問と回答

結論

最後に、これらの20のHibernateインタビューの質問は、問題のトピックの表面を傷つけますが、これがHibernateで氷を壊し、それをより深く掘り下げるのに役立つことを願っています!

Javaでのキャリアをスタートさせてください。

あなたの夢の仕事に着陸

ソフトウェアエンジニアリングの修士号を今すぐ申し込む