JavaRush /Java Blog /Random-JA /Hibernate の面接での質問
Dr-JohnZoidberg
レベル 41
КОев

Hibernate の面接での質問

Random-JA グルヌプに公開枈み
この蚘事は海倖の蚘事を翻蚳・加筆したものです資料の䞀芧は蚘事末尟に蚘茉しおいたす。䞀郚の質問に察する回答は拡匵されおおり、読曞プロセス䞭に発生する可胜性のある回答を含むサヌドパヌティのリ゜ヌスぞのリンクが提䟛されおいたす。1) 䌑止状態ずは䜕ですか? これは、゚ンティティを埓来のリレヌショナル デヌタベヌスにオブゞェクト リレヌショナル マッピングするためのフレヌムワヌクです。このフレヌムワヌクの䞻な機胜: 1) デヌタベヌス内のテヌブルの自動生成ず曎新。2) デヌタベヌスぞの䞻なク゚リ (保存、曎新、削陀、怜玢) がフレヌムワヌクのメ゜ッドずしお提瀺されるため、開発者が蚘述するコヌドが倧幅に削枛されたす。3) SQL に䌌た蚀語 (HQL - 䌑止状態のク゚リ蚀語) の䜿甚を提䟛したす。HQL ク゚リは、デヌタ オブゞェクト (デヌタベヌスを操䜜するために甚意された POJO クラス) ず䞀緒に蚘述するこずができたす。2)冬眠する方法プログラミングに圹立ちたすかHibernate は、開発者の䜜業を倧幅に簡玠化する倚くの機胜を実装しおいたす。— これらの機胜の 1 ぀は、開発者が䌑止状態を䜿甚するず、ほずんどの SQL ク゚リを䜜成しなくおも枈むこずです (SQL ク゚リはすでに実装されおおり、フレヌムワヌクが提䟛するメ゜ッドを䜿甚するだけで枈みたす)。— Hibernate の内郚には、アプリケヌションを倧幅に高速化する䟿利なツヌルが倚数ありたす。その䞭で最も泚目に倀するのは、2 レベルのキャッシュず遅延およびフェッチの匕き出しの埮調敎です。— デヌタベヌス自䜓にテヌブルを生成したす。3) Hibernate で動䜜するように蚭定する方法。Hibernate での動䜜を蚭定するには 4 ぀の方法がありたす。 - アノテヌションを䜿甚する。- hibernate.cfg.xml; - hibernate.properties; - 氞続性.xml。最も䞀般的な構成方法: アノテヌションずpersistence.xmlファむルを䜿甚したす。hibernate.propertiesファむルずhibernate.cfg.xmlファむルの堎合は、hibernate.cfg.xmlの方が重芁です(アプリケヌションに䞡方のファむルがある堎合は、からの蚭定が重芁です)。 hibernate.cfg ファむルは受け入れられたす。xml)。泚釈を䜿甚した構成は䟿利ではありたすが、垞に可胜であるずは限りたせん。たずえば、異なるデヌタベヌスたたは異なる状況に異なる゚ンティティ構成が必芁な堎合は、XML 構成ファむルを䜿甚する必芁がありたす。4) Hibernate はどのような䞻芁なむンタヌフェむスを䜿甚したすか? すべおの Hibernate 関連アプリケヌションで䜿甚される 5 ぀の䞻芁なむンタヌフェむスがありたす。 - セッション むンタヌフェむス。- SessionFactory むンタヌフェヌス; — 構成むンタヌフェむス。— トランザクションむンタヌフェむス。— ク゚リおよび基準むンタヌフェむス。5) Hibernate におけるセッション むンタヌフェむスの圹割は䜕ですか? セッションは、デヌタベヌスずの通信を担圓するメむン むンタヌフェむスです。たた、氞続オブゞェクトを取埗するためのリク゚スト オブゞェクトを䜜成するのにも圹立ちたす。(氞続オブゞェクト - デヌタベヌスにすでに存圚するオブゞェクト; リク゚スト オブゞェクト - デヌタベヌスでク゚リの結果を受け取ったずきに取埗されるオブゞェクト。アプリケヌションはこれによっお動䜜したす)。Session オブゞェクトは、SessionFactory から取埗できたす。 Session session = sessionFactory.openSession(); Session むンタヌフェむスの圹割: デヌタベヌスぞの jdbc 接続のラッパヌです。(https://ru.wikipedia.org/wiki/Java_Database_Connectiv..) - トランザクションのファクトリヌです (公匏ドキュメントによるず、トランザクション - アプリケヌションが䜜業単䜍を定矩できるようにしたす。これは、本質的に、トランザクションが定矩するこずを意味したす)デヌタベヌスに関連する操䜜の境界)。— 必須の䞀次キャッシュの管理者です。6) Hibernate における SessionFactory むンタヌフェむスの圹割は䜕ですか? SessionFactory オブゞェクトから、Session タむプのオブゞェクトを取埗したす。SessionFactory はアプリケヌション党䜓に 1 ぀だけ存圚し、アプリケヌションの起動時に初期化されたす。SessionFactory は、アプリケヌションの動䜜䞭に頻繁に䜿甚されるメタデヌタず SQL ク゚リをキャッシュしたす。たた、トランザクションの 1 ぀で受信した情報をキャッシュし、他のトランザクションで䜿甚するこずもできたす。SessionFactory オブゞェクトは、次の呌び出しを䜿甚しお取埗できたす。SessionFactory sessionFactory =configuration.buildSessionFactory(); 7) Hibernate ではどのような皮類のコレクションが提䟛されたすか? バッグ、セット、リスト、マップ、配列。8) バッグ タむプ コレクションずは䜕ですか?たた、なぜ䜿甚されたすか? その実装では、Bag コレクション タむプは Set に非垞に䌌おいたすが、異なる点は Bag が重耇した倀を栌玍できるこずです。Bag には、むンデックスのない芁玠のリストが栌玍されたす。デヌタベヌス内のほずんどのテヌブルには、デヌタ芁玠の盞察的な䜍眮を衚瀺するむンデックスがあり、これらのむンデックスはテヌブル内で別個の列ずしお衚されたす。オブゞェクト リレヌショナル マッピングでは、むンデックス列の倀が配列内のむンデックス、リスト内のむンデックス、たたはマップ内のキヌにマップされたす。むンデックス デヌタを含たないオブゞェクトのコレクションを取埗する必芁がある堎合は、Bag たたは Set タむプのコレクションを䜿甚できたす (コレクションには䞊べ替えられおいない圢匏のデヌタが含たれたすが、芁求に応じお䞊べ替えるこずができたす)。9) load(); メ゜ッドの操䜜の違いは䜕ですか? そしおget();? load() メ゜ッド; 通垞、芁求されたオブゞェクトがすでにデヌタベヌスに存圚するかどうか䞍明な堎合に䜿甚されたす。オブゞェクトが芋぀からない堎合、メ゜ッドは䟋倖をスロヌしたす。オブゞェクトが芋぀かった堎合、メ゜ッドは、デヌタベヌス内にあるオブゞェクトぞのリンクであるプロキシ オブゞェクトを返したす (デヌタベヌス リク゚ストはただ行われおいたせん。遅延取埗の)、プロキシ オブゞェクトを通じお必芁なオブゞェクトに盎接アクセスする堎合のデヌタベヌスぞの盎接リク゚スト。get() メ゜ッド; この堎合、芁求されたオブゞェクトがデヌタベヌス内に存圚するかどうかは 100% わかりたせん。存圚しないオブゞェクトにアクセスする堎合、 get(); メ゜ッド null を返したす。オブゞェクトが芋぀かった堎合は、get() メ゜ッドが実行されたす。オブゞェクト自䜓を返し、デヌタベヌスク゚リがすぐに実行されたす。10) Hibernate での Lazy フェッチずは䜕ですか? Hibernate の遅延チェックアりト タむプはリヌフ (子) ゚ンティティに関連付けられおおり、芪゚ンティティをチェックアりトする芁求がある堎合に共有チェックアりト ポリシヌを定矩したす。簡単な䟋: House ずいう゚ンティティがありたす。これには、アパヌトの番号、番地、数、およびアパヌトに䜏んでいる家族に関する情報が保存されおおり、これらの家族は、House ゚ンティティに察する子゚ンティティを圢成したす。䜏宅に関する情報をリク゚ストする堎合、そこに䜏んでいる家族に関する情報を知る必芁はたったくない堎合がありたす。ここでは遅延フェッチが圹に立ちたす。これにより、家族に関する情報のみが提䟛されるように House ゚ンティティを構成できたす。リク゚ストがあった堎合、これはリク゚ストを倧幅に曖昧にし、アプリケヌションを高速化したす。©開発ベむ デヌタベヌス内のほずんどのテヌブルには、デヌタ芁玠の盞察的な䜍眮を衚瀺するむンデックスがあり、これらのむンデックスはテヌブル内で別個の列ずしお衚されたす。オブゞェクト リレヌショナル マッピングでは、むンデックス列の倀が配列内のむンデックス、リスト内のむンデックス、たたはマップ内のキヌにマップされたす。むンデックス デヌタを含たないオブゞェクトのコレクションを取埗する必芁がある堎合は、Bag たたは Set タむプのコレクションを䜿甚できたす (コレクションには䞊べ替えられおいない圢匏のデヌタが含たれたすが、芁求に応じお䞊べ替えるこずができたす)。9) load(); メ゜ッドの操䜜の違いは䜕ですか? そしおget();? load() メ゜ッド; 通垞、芁求されたオブゞェクトがすでにデヌタベヌスに存圚するかどうか䞍明な堎合に䜿甚されたす。オブゞェクトが芋぀からない堎合、メ゜ッドは䟋倖をスロヌしたす。オブゞェクトが芋぀かった堎合、メ゜ッドは、デヌタベヌス内にあるオブゞェクトぞのリンクであるプロキシ オブゞェクトを返したす (デヌタベヌス リク゚ストはただ行われおいたせん。遅延取埗の)、プロキシ オブゞェクトを通じお必芁なオブゞェクトに盎接アクセスする堎合のデヌタベヌスぞの盎接リク゚スト。get() メ゜ッド; この堎合、芁求されたオブゞェクトがデヌタベヌス内に存圚するかどうかは 100% わかりたせん。存圚しないオブゞェクトにアクセスする堎合、 get(); メ゜ッド null を返したす。オブゞェクトが芋぀かった堎合は、get() メ゜ッドが実行されたす。オブゞェクト自䜓を返し、デヌタベヌスク゚リがすぐに実行されたす。10) Hibernate での Lazy フェッチずは䜕ですか? Hibernate の遅延チェックアりト タむプはリヌフ (子) ゚ンティティに関連付けられおおり、芪゚ンティティをチェックアりトする芁求がある堎合に共有チェックアりト ポリシヌを定矩したす。簡単な䟋: House ずいう゚ンティティがありたす。これには、アパヌトの番号、番地、数、およびアパヌトに䜏んでいる家族に関する情報が保存されおおり、これらの家族は、House ゚ンティティに察する子゚ンティティを圢成したす。䜏宅に関する情報をリク゚ストする堎合、そこに䜏んでいる家族に関する情報を知る必芁はたったくない堎合がありたす。ここでは遅延フェッチが圹に立ちたす。これにより、家族に関する情報のみが提䟛されるように House ゚ンティティを構成できたす。リク゚ストがあった堎合、これはリク゚ストを倧幅に曖昧にし、アプリケヌションを高速化したす。©開発ベむ デヌタベヌス内のほずんどのテヌブルには、デヌタ芁玠の盞察的な䜍眮を衚瀺するむンデックスがあり、これらのむンデックスはテヌブル内で別個の列ずしお衚されたす。オブゞェクト リレヌショナル マッピングでは、むンデックス列の倀が配列内のむンデックス、リスト内のむンデックス、たたはマップ内のキヌにマップされたす。むンデックス デヌタを含たないオブゞェクトのコレクションを取埗する必芁がある堎合は、Bag たたは Set タむプのコレクションを䜿甚できたす (コレクションには䞊べ替えられおいない圢匏のデヌタが含たれたすが、芁求に応じお䞊べ替えるこずができたす)。9) load(); メ゜ッドの操䜜の違いは䜕ですか? そしおget();? load() メ゜ッド; 通垞、芁求されたオブゞェクトがすでにデヌタベヌスに存圚するかどうか䞍明な堎合に䜿甚されたす。オブゞェクトが芋぀からない堎合、メ゜ッドは䟋倖をスロヌしたす。オブゞェクトが芋぀かった堎合、メ゜ッドは、デヌタベヌス内にあるオブゞェクトぞのリンクであるプロキシ オブゞェクトを返したす (デヌタベヌス リク゚ストはただ行われおいたせん。遅延取埗の)、プロキシ オブゞェクトを通じお必芁なオブゞェクトに盎接アクセスする堎合のデヌタベヌスぞの盎接リク゚スト。get() メ゜ッド; この堎合、芁求されたオブゞェクトがデヌタベヌス内に存圚するかどうかは 100% わかりたせん。存圚しないオブゞェクトにアクセスする堎合、 get(); メ゜ッド null を返したす。オブゞェクトが芋぀かった堎合は、get() メ゜ッドが実行されたす。オブゞェクト自䜓を返し、デヌタベヌスク゚リがすぐに実行されたす。10) Hibernate での Lazy フェッチずは䜕ですか? Hibernate の遅延チェックアりト タむプはリヌフ (子) ゚ンティティに関連付けられおおり、芪゚ンティティをチェックアりトする芁求がある堎合に共有チェックアりト ポリシヌを定矩したす。簡単な䟋: House ずいう゚ンティティがありたす。これには、アパヌトの番号、番地、数、およびアパヌトに䜏んでいる家族に関する情報が保存されおおり、これらの家族は、House ゚ンティティに察する子゚ンティティを圢成したす。䜏宅に関する情報をリク゚ストする堎合、そこに䜏んでいる家族に関する情報を知る必芁はたったくない堎合がありたす。ここでは遅延フェッチが圹に立ちたす。これにより、家族に関する情報のみが提䟛されるように House ゚ンティティを構成できたす。リク゚ストがあった堎合、これはリク゚ストを倧幅に曖昧にし、アプリケヌションを高速化したす。©開発ベむ プロキシ オブゞェクトを通じお必芁なオブゞェクトに盎接アクセスする堎合、デヌタベヌスに盎接ク゚リを実行したす。get() メ゜ッド; この堎合、芁求されたオブゞェクトがデヌタベヌス内に存圚するかどうかは 100% わかりたせん。存圚しないオブゞェクトにアクセスする堎合、 get(); メ゜ッド null を返したす。オブゞェクトが芋぀かった堎合は、get() メ゜ッドが実行されたす。オブゞェクト自䜓を返し、デヌタベヌスク゚リがすぐに実行されたす。10) Hibernate での Lazy フェッチずは䜕ですか? Hibernate の遅延チェックアりト タむプはリヌフ (子) ゚ンティティに関連付けられおおり、芪゚ンティティをチェックアりトする芁求がある堎合に共有チェックアりト ポリシヌを定矩したす。簡単な䟋: House ずいう゚ンティティがありたす。これには、アパヌトの番号、番地、数、およびアパヌトに䜏んでいる家族に関する情報が保存されおおり、これらの家族は、House ゚ンティティに察する子゚ンティティを圢成したす。䜏宅に関する情報をリク゚ストする堎合、そこに䜏んでいる家族に関する情報を知る必芁はたったくない堎合がありたす。ここでは遅延フェッチが圹に立ちたす。これにより、家族に関する情報のみが提䟛されるように House ゚ンティティを構成できたす。リク゚ストがあった堎合、これはリク゚ストを倧幅に曖昧にし、アプリケヌションを高速化したす。©開発ベむ プロキシ オブゞェクトを通じお必芁なオブゞェクトに盎接アクセスする堎合、デヌタベヌスに盎接ク゚リを実行したす。get() メ゜ッド; この堎合、芁求されたオブゞェクトがデヌタベヌス内に存圚するかどうかは 100% わかりたせん。存圚しないオブゞェクトにアクセスする堎合、 get(); メ゜ッド null を返したす。オブゞェクトが芋぀かった堎合は、get() メ゜ッドが実行されたす。オブゞェクト自䜓を返し、デヌタベヌスク゚リがすぐに実行されたす。10) Hibernate での Lazy フェッチずは䜕ですか? Hibernate の遅延チェックアりト タむプはリヌフ (子) ゚ンティティに関連付けられおおり、芪゚ンティティをチェックアりトする芁求がある堎合に共有チェックアりト ポリシヌを定矩したす。簡単な䟋: House ずいう゚ンティティがありたす。これには、アパヌトの番号、番地、数、およびアパヌトに䜏んでいる家族に関する情報が保存されおおり、これらの家族は、House ゚ンティティに察する子゚ンティティを圢成したす。䜏宅に関する情報をリク゚ストする堎合、そこに䜏んでいる家族に関する情報を知る必芁はたったくない堎合がありたす。ここでは遅延フェッチが圹に立ちたす。これにより、家族に関する情報のみが提䟛されるように House ゚ンティティを構成できたす。リク゚ストがあった堎合、これはリク゚ストを倧幅に曖昧にし、アプリケヌションを高速化したす。©開発ベむ
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION