20 najczęstszych pytań i odpowiedzi na wywiad dotyczący hibernacji [dla świeżo upieczonych i doświadczonych]

Opublikowany: 2020-12-31

Java od dawna zajmuje jedną z czołowych pozycji na liście najpopularniejszych języków programowania. Oczywiście, będąc językiem programowania o wysokim priorytecie, preferowanym przez programistów na całym świecie, Javie towarzyszy ogromna kolekcja narzędzi, bibliotek i frameworków. W tym poście omówimy popularny framework Javy, Hibernate.

Każdy, kto pracował lub pracuje z Javą, doskonale zdaje sobie sprawę z Hibernate i jego możliwości. Rozłóżmy jednak to dla tych z Was, którzy właśnie zetknęli się z tą nazwą – Hibernate.

Spis treści

Co to jest hibernacja?

Hibernate to narzędzie ORM (mapowanie obiektowo-relacyjne) zaprojektowane wyłącznie dla Javy. innymi słowy, oferuje strukturę, która pomaga mapować model obiektowy do relacyjnej bazy danych. Hibernate skupia się przede wszystkim na mapowaniu z klas Java na tabele bazy danych oraz mapowaniu z typów danych Java na typy danych SQL .

Hibernate rozszerza również usługi zapytań i pobierania danych. Jest napisany w Javie i oparty na JVM. Hibernate oferuje referencyjne implementacje Java Persistence API, co czyni go fantastycznym wyborem dla ORM (Object Relational Mapping). Możemy użyć Hibernate persistence API do operacji CRUD

Pierwotnie Hibernate został zaprojektowany jako prostsza i lepsza alternatywa dla EJB2 (Enterprise Java Beans w wersji 2). Dziś Hibernate szczyci się tym, że jest jednym z najczęściej używanych narzędzi ORM dla aplikacji Java.

Jest szeroko stosowany do tworzenia aplikacji korporacyjnych opartych na języku Java do obsługi baz danych. Ponadto Hibernate Persistence API doskonale nadaje się do operacji CRUD.

Teraz, gdy masz już podstawową wiedzę na temat Hibernate, zapoznajmy się trochę lepiej z tym narzędziem ORM dzięki tym pytaniom z wywiadu X Hibernate!

Zapisz się na kursy rozwoju oprogramowania z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Hibernacja Pytania i odpowiedzi podczas rozmowy kwalifikacyjnej

1. Co to jest ORM?

ORM (ang. Object Relational Mapping) odnosi się do techniki mapowania obiektów na dane przechowywane w bazie danych. Celem ORM jest uproszczenie tworzenia danych, dostępu do danych i manipulacji danymi.

2. Co to jest JPA?

Java Persistence API (JPA) to specyfikacja przydzielająca standardy i funkcjonalności narzędziom ORM. Dostęp do klas i interfejsów JPA można uzyskać z pakietu javax.persistence . Wszystkie specyfikacje JPA są definiowane za pomocą adnotacji w pakiecie javax.persistence. Zaletą korzystania z adnotacji JPA jest to, że umożliwiają pisanie kodu niezależnego od implementacji.

3. Jakie są ważne adnotacje JPA używane do mapowania hibernacji?

Hibernate obsługuje adnotacje JPA wraz z wieloma innymi adnotacjami, do których można uzyskać dostęp za pośrednictwem pakietu org.hibernate.annotations. Oto siedem najważniejszych adnotacji JPA:

javax.persistence.Entity — jest używany w połączeniu z klasami modeli do deklarowania ich jako ziaren encji.

javax.persistence.Table — jest używany z ziarnami encji w celu zdefiniowania odpowiedniej nazwy tabeli w bazie danych.

javax.persistence.Access — służy do określenia typu dostępu, pola lub właściwości. Domyślną wartością tej adnotacji jest pole.

javax.persistence.Id — definiuje klucz podstawowy w ziarno encji.

javax.persistence.EmbeddedId — służy do określenia złożonego klucza podstawowego w elemencie bean encji.

javax.persistence.Column – określa nazwę kolumny w tabeli bazy danych.

javax.persistence.GeneratedValue – określa strategię potrzebną do wygenerowania klucza podstawowego.

4. Zdefiniuj HQL

HQL to skrót od Hibernate Query Language. Jest to zorientowany obiektowo język zapytań, niezależny od bazy danych.

5.Jak wykonałbyś mapowanie w trybie hibernacji?

Funkcja mapowania asocjacji w Hibernate ułatwia mapowanie, obsługując cztery standardowe asocjacje, takie same jak w modelu relacyjnej bazy danych:

  • Stowarzyszenia jeden-do-jednego
  • Stowarzyszenia jeden-do-wielu
  • Stowarzyszenia wiele-do-jednego
  • Stowarzyszenia wiele-do-wielu

Każda z tych asocjacji może być mapowana jako asocjacja jednokierunkowa lub dwukierunkowa.

6. Nazwij główne interfejsy/komponenty Hibernate.

Hibernate ma sześć podstawowych interfejsów – Configuration, SessionFactory, Session, Query, Criteria i Transaction.

7.Czy możesz stworzyć zapytanie SQL w Hibernate?

Tak, możesz tworzyć zapytania SQL w Hibernate. Aby utworzyć zapytanie SQL, musisz użyć następującej składni:

Session.createSQLQuery

8. Co to jest plik konfiguracyjny Hibernate?

Plik konfiguracyjny Hibernate przechowuje konfiguracje specyficzne dla bazy danych. Służy do inicjalizacji interfejsu SessionFactory. Ten plik zawiera również inne istotne informacje, takie jak informacje dotyczące dialektu, które pozwalają Hibernate na poznanie typu bazy danych i szczegółów mapowania pliku/klasy.

9. Co to jest klasa trwała?

W Hibernate klasy, których obiekty i instancje są przechowywane w klasach bazy danych, nazywane są klasami trwałymi.

10. Zdefiniuj sesję

Interfejs sesji znajduje się pomiędzy Hibernate a warstwą aplikacji Java. Służy głównie do wykonywania operacji na bazach danych. Sesja pomaga nawiązać i utrzymać połączenie między aplikacją Hibernate a bazą danych. Oferuje różne metody wykonywania operacji tworzenia, odczytu, aktualizacji i usuwania dla obiektów trwałych.

Ponadto Session działa jak fabryka zapytań, kryteriów i transakcji, co oznacza, że ​​rozszerza metody fabryczne, aby zwrócić te instancje. Obiektu sesji można używać do tworzenia kryteriów i wykonywania zapytań HQL oraz zapytań natywnych SQL.

11. Zdefiniuj fabrykę sesji.

W Hibernate SessionFactory jest klasą fabryczną używaną do uzyskiwania dostępu do obiektów Session. Odczytuje parametry konfiguracyjne Hibernate i łączy się z bazą danych w celu pobrania obiektów Session. SessionFactory jest zasadniczo fabryką Session i zapewnia instancję Session.

Po utworzeniu SessionFactory jej stan wewnętrzny zostaje naprawiony, dzięki czemu jest niezmienny. Wewnętrzny stan SessionFactory zawiera pełne metadane mapowania obiektów/relacyjnych.

12. Rozróżnij plik konfiguracyjny Hibernate i plik mapowania Hibernate.

Plik konfiguracyjny Hibernate zawiera konfiguracje specyficzne dla bazy danych oraz informacje dialektu. Służy do inicjowania SessionFactory. Dostęp do referencji bazy danych lub informacji o zasobach JNDI można uzyskać z pliku XML konfiguracji Hibernate.

Z drugiej strony plik mapowania Hibernate służy do definiowania mapowań kolumn tabeli bazy danych i pól bean encji. Plik mapowania jest rdzeniem każdej aplikacji Hibernate. Zawiera odwzorowanie nazwy klasy POJO na nazwę tabeli oraz nazwy zmiennych klasy POJO na nazwy kolumn tabeli.

13. Czym są POJO?

POJO to akronim od Plain Old Java Object. Zasadniczo POJO to ziarna java zaprojektowane przy użyciu standardowych metod pobierania i ustawiania dla poszczególnych właściwości. Zaletą używania POJO zamiast klas Javy jest możliwość pisania czystego, precyzyjnego i wydajnego kodu.

14. Nazwij kluczowe składniki obiektu konfiguracyjnego Hibernate.

Obiekt konfiguracyjny Hibernate ma dwa kluczowe elementy

  1. Połączenie z bazą danych zarządzane przez jeden lub więcej plików konfiguracyjnych.
  2. Konfiguracja mapowania klas, która służy do nawiązywania połączenia między klasami Java a tabelami bazy danych.

15.Co to jest dialekt hibernacji?

Hibernate Dialect określa typ bazy danych, której chcesz użyć. Pozwala to Hibernate na poznanie tych informacji z wyprzedzeniem w celu wygenerowania odpowiednich instrukcji SQL, które najlepiej pasują do preferowanego/określonego typu bazy danych.

16. Zdefiniuj „Buforowanie hibernacji”.

Buforowanie hibernacji to proces wykonywania zapytań o dane w celu zwiększenia szybkości i wydajności aplikacji hibernacji. Celem jest zminimalizowanie liczby zapytań do bazy danych, co skutkuje skróceniem czasu przepustowości.

EHCache to domyślna funkcja pamięci podręcznej Hibernate.

17.Co to jest pamięć podręczna pierwszego i drugiego poziomu?

W Hibernate pamięć podręczna pierwszego poziomu odnosi się do pamięci podręcznej sesji. Jest to obowiązkowa pamięć podręczna, przez którą muszą przejść wszystkie żądania. Druga pamięć podręczna to opcjonalna pamięć podręczna, która buforuje obiekty w sesjach.

Pamięć podręczną drugiego poziomu można skonfigurować na podstawie wstępnej kolekcji i na podstawie klasy. Zgodnie z ogólną zasadą, przed podjęciem jakiejkolwiek próby zlokalizowania obiektu w pamięci podręcznej drugiego poziomu należy sprawdzić pamięć podręczną pierwszego poziomu.

18.Wyjaśnij różne etapy powstawania fasoli obiektu/bytu.

Instancja ziarna obiektu/elementu zwykle istnieje w jednej z następujących trzech faz:

  • Przejściowy — w tej fazie obiekt nigdy nie utrzymuje się ani nie łączy z żadną sesją. Instancje przejściowe można konwertować na trwałe, używając funkcji save(), persist() lub saveOrUpdate(). Aby przywrócić trwałą instancję z powrotem do stanu przejściowego, możesz użyć polecenia delete().
  • Trwały — obiekt osiąga stan trwały, gdy kojarzy się z unikalną sesją. Wszystkie instancje zwrócone przez funkcje get() lub load() są w stanie trwałym.
  • Odłączony — gdy trwały obiekt nie jest powiązany z żadną sesją, osiąga stan odłączony. Odłączoną instancję można przekonwertować na trwałą za pomocą funkcji update(), saveOrUpdate(), lock() lub replicate().

19. Jaki jest cel Dirty Checking w trybie hibernacji?

Funkcja automatycznego sprawdzania zabrudzeń w Hibernate automatycznie wywołuje instrukcje aktualizacji na obiektach zmodyfikowanych w transakcji, pomagając w ten sposób programistom uniknąć czasochłonnych czynności związanych z zapisem.

Dirty sprawdzanie tylko modyfikuje/aktualizuje pola, które wymagają działania, pozostawiając inne pola nietknięte. Ogólnie rzecz biorąc, skraca to czas zapisu do bazy danych.

20. Zdefiniuj „Zarządzanie transakcjami”.

Zarządzanie transakcjami to funkcja frameworka Spring. Jest to w zasadzie proces zarządzania zestawem poleceń/oświadczeń. W Hibernate interfejs Transaction realizuje zarządzanie transakcjami, zachowując abstrakcję od implementacji transakcji (JTA, JDBC). Transakcję można zainicjować, wywołując metodę session.beginTransaction() .

Przeczytaj także: Pytania i odpowiedzi dotyczące rozmowy kwalifikacyjnej w języku Java

Wniosek

Podsumowując, mimo że te dwadzieścia pytań z wywiadu w Hibernate zarysowuje powierzchnię omawianego tematu, mamy nadzieję, że pomoże ci to przełamać lody za pomocą Hibernate i zagłębić się w to głębiej!

Życzymy wszystkiego najlepszego w rozpoczęciu kariery w Javie!

Wyląduj na swojej wymarzonej pracy

Aplikuj teraz na studia magisterskie z inżynierii oprogramowania