50 найкращих питань на співбесіді щодо Hibernate (2025)
Ось питання та відповіді на співбесіду в Hibernate для новачків, а також для досвідчених кандидатів, щоб отримати роботу своєї мрії.
1. Що таке Hibernate?
Hibernate — популярна структура Java, яка дозволяє ефективне відображення об’єктно-реляційних даних за допомогою файлів конфігурації у форматі XML. Після відображення об’єктів Java у таблиці бази даних база даних використовується та обробляється за допомогою об’єктів Java без написання складних запитів до бази даних.
Безкоштовне завантаження у форматі PDF: Hibernate Interview Questions and Answers
2. Що таке ORM?
ORM (Object Relational Mapping) — це фундаментальна концепція структури Hibernate, яка відображає таблиці бази даних з об’єктами Java, а потім надає різні APIдля виконання різних типів операцій над таблицями даних.
3. Як властивості класу зіставляються зі стовпцями таблиці бази даних у Hibernate?
Зіставлення між властивостями класу та стовпцями таблиці визначено в XML файл, як у прикладі нижче:
4. Яке використання інтерфейсу конфігурації в сплячому режимі?
Інтерфейс конфігурації сплячого режиму використовується для налаштування сплячого режиму. Це також звикло завантажувач зимувати. Документи відображення hibernate знаходяться за допомогою цього інтерфейсу.
5. Як ми можемо використовувати нові спеціальні інтерфейси для покращення функціональності вбудованих інтерфейсів hibernate?
Ми можемо використовувати інтерфейси розширення, щоб додати будь-які необхідні функції, які не підтримуються вбудованими інтерфейсами.
6. Чи всі файли зіставлення hibernate повинні мати розширення .hbm.xml, щоб працювати належним чином?
Ні, розширення .hbm.xml є домовленістю, а не вимогою для імен файлів відображення сплячого режиму. Ми можемо мати будь-яке розширення для цих файлів відображення.
7. Як ми створюємо фабрику сеансів у сплячому режимі?
Щоб створити фабрику сеансів у сплячому режимі, спочатку створюється об’єкт конфігурації, який посилається на шлях до файлу конфігурації, а потім для цієї конфігурації створюється фабрика сеансів, як показано в прикладі нижче:
Configuration config = new Configuration(); config.addResource("myinstance/configuration.hbm.xml"); config.setProperties( System.getProperties() ); SessionFactory sessions = config.buildSessionFactory();
8. Що таке POJO і яке їхнє значення?
POJO (прості старі об’єкти Java) — це компоненти Java з відповідними методами отримання та встановлення для кожної властивості.
Використання POJO замість простих класів Java призводить до ефективного та добре побудованого коду.
9. Що таке HQL?
HQL — це мова запитів, яка використовується в Hibernate і є розширенням SQL. HQL є дуже ефективною, простою та гнучкою мовою запитів для виконання різних типів операцій з реляційною базою даних без написання складних запитів до бази даних.
10. Як ми можемо викликати збережені процедури в сплячому режимі?
У сплячому режимі ми можемо виконувати збережені процедури за допомогою наведеного нижче коду:
11. Що таке API критеріїв?
Criteria — це простий, але потужний API hibernate, який використовується для отримання об’єктів через композицію об’єкта критеріїв.
12. Які переваги використання шаблону Hibernate?
Нижче наведено деякі основні переваги використання шаблону Hibernate:
a. Закриття сесії відбувається автоматично.
b. Взаємодія з сеансом глибокого сну спрощена.
в. Обробка винятків автоматизована.
13. Як ми можемо побачити на консолі згенерований сплячим SQL?
Нам потрібно додати наступне у файл конфігурації сплячого режиму, щоб увімкнути перегляд SQL на консолі з метою налагодження:
14. Які два типи колекцій існують у сплячому режимі?
Нижче наведено два типи колекцій у сплячому режимі:
- Відсортована колекція
- Колекція замовлень
15. Яка різниця між методами session.save() і session.saveOrUpdate() у сплячому режимі?
Метод Sessionsave(). зберігає запис, лише якщо він унікальний щодо свого первинного ключа, і не вдасться вставити, якщо первинний ключ уже існує в таблиці.
метод saveOrUpdate(). вставляє новий запис, якщо первинний ключ унікальний, і оновлює існуючий запис, якщо первинний ключ уже існує в таблиці.
16. Які переваги сплячого режиму JDBC?
- Hibernate можна легко використовувати з будь-яким типом бази даних як незалежну від бази даних, тоді як у випадку JDBC розробник повинен писати запити до бази даних.
- Використовуючи Hibernate, розробнику не потрібно бути експертом у написанні складних запитів, оскільки HQL спрощує процес написання запитів, тоді як у випадку JDBC його робота розробника полягає в написанні та налаштуванні запитів.
- У разі сплячого режиму немає необхідності створювати пули з’єднань, оскільки сплячий режим автоматично обробляє всі з’єднання, а у випадку JDBC потрібно створювати пули з’єднань.
17. Як ми можемо отримати статистику сплячого режиму?
Ми можемо отримати статистику сплячого режиму за допомогою методу getStatistics() класу SessionFactory, як показано нижче:
SessionFactory.getStatistics()
18. Що таке тимчасовий стан екземпляра в Hibernate?
Якщо екземпляр не пов’язаний з жодним постійним контекстом, а також, він ніколи не був пов’язаний з жодним постійним контекстом, тоді він вважається тимчасовим.
19. Як ми можемо скоротити час запису бази даних у Hibernate?
Hibernate надає функцію брудної перевірки, яка може бути використана для скорочення часу запису бази даних. Функція брудної перевірки сплячого режиму оновлює лише ті поля, які потребують змін, а інші залишає незмінними.
20. Яке використання інтерфейсів зворотного виклику в сплячому режимі?
Інтерфейси зворотного виклику сплячого режиму корисні для отримання сповіщень про події від об’єктів. Наприклад, коли об’єкт завантажується або видаляється, генерується подія та надсилається сповіщення за допомогою інтерфейсів зворотного виклику.
21. Коли примірник переходить у відключений стан у сплячий режим?
Коли екземпляр раніше був пов’язаний з деяким постійним контекстом (наприклад, таблицею) і більше не пов’язаний, він викликається, щоб перебувати у відокремленому стані.
22. Що таке чотири рівні ORM у сплячому режимі?
Нижче наведено чотири рівні ORM у сплячому режимі:
- Чистий реляційний
- Відображення світлових об’єктів
- Відображення середніх об'єктів
- Повне відображення об'єктів
23. Що таке керування транзакціями в сплячому режимі? Як це працює?
Управління транзакціями — це процес керування набором операторів або команд. У сплячці; керування транзакціями здійснюється за допомогою інтерфейсу транзакцій, як показано в коді нижче:
Session s = null;
Transaction tr = null;
try {
s = sessionFactory.openSession();
tr = s.beginTransaction();
doTheAction(s);
tr.commit();
} catch (RuntimeException exc) {
tr.rollback();
} finally {
s.close();
}
24. Які є два методи конфігурації сплячого режиму?
Ми можемо використовувати будь-який з наступних двох методів конфігурації сплячого режиму:
- Конфігурація на основі XML (з використанням файлу hibernate.cfg.xml)
- Програмна конфігурація (з використанням логіки коду)
25. Яка служба кешу за замовчуванням у сплячому режимі?
Hibernate підтримує кілька служб кешу, як-от EHCache, OSCache, SWARMCache і TreeCache, а стандартною службою кешу в Hibernate є EHCache.
26. Які дві асоціації відображення використовуються в сплячому режимі?
У сплячці; ми маємо наступні два типи асоціацій відображення між сутностями:
- Асоціація один до одного
- Асоціація «багато до багатьох».
27. Для чого використовується Hibernate QBC API?
Hibernate Query By Criteria (QBC) API використовується для створення запитів шляхом маніпулювання об’єктами критеріїв під час виконання.
28. Скількома способами можна отримати об’єкти з бази даних у сплячому режимі?
Hibernate надає такі чотири способи отримання об’єктів із бази даних:
- Використання HQL
- Використання ідентифікатора
- Використання Criteria API
- Використання стандартного SQL
29. Як первинний ключ створюється за допомогою hibernate?
Первинний ключ бази даних вказано у файлі конфігурації hbm.xml. Генератор також можна використовувати, щоб вказати, як у базі даних створюється первинний ключ.
У прикладі нижче deptId діє як первинний ключ:
30. Як ми можемо повторно приєднати будь-які від’єднані об’єкти в Hibernate?
Об’єкти, які були від’єднані та більше не пов’язані з жодними постійними об’єктами, можна повторно приєднати, викликавши метод session.merge() класу сеансу.
31. Які існують різні способи відключення кеш-пам’яті другого рівня сплячого режиму?
Кеш другого рівня Hibernate можна вимкнути будь-яким із наведених нижче способів.
- Встановивши use_second_level_cache як false.
- За допомогою CACHEMODE.IGNORE
- Використання постачальника кешу як org.hibernate.cache.NoCacheProvider
32. Що таке метадані ORM?
Усе зіставлення між класами та таблицями, властивостями та стовпцями, типами Java та типами SQL тощо визначено в метаданих ORM.
33. Яка з них є фабрикою транзакцій за замовчуванням у сплячому режимі?
У hibernate 3.2 фабрикою транзакцій за замовчуванням є JDBCTransactionFactory.
34. Яка роль JMX у сплячому режимі?
Програми та компоненти Java керуються в режимі глибокого сну за допомогою стандартного API під назвою JMX API. JMX надає інструменти для розробки ефективних і надійних розподілених веб-рішень.
35. Як ми можемо прив’язати фабрику сеансу сплячого режиму до JNDI?
Фабрику сеансів Hibernate можна прив’язати до JNDI, змінивши конфігурацію у файлі hibernate.cfg.
36. Скількома способами можна ідентифікувати об’єкти в Hibernate?
Ідентифікацію об’єкта в сплячому режимі можна виконати трьома способами:
- Використання ідентифікатора об’єкта: використання оператора ==.
- Використання рівності об’єктів: використання методу equals().
- Використання ідентичності бази даних: об’єкти реляційної бази даних можна ідентифікувати, якщо вони представляють той самий рядок.
37. Які різні стратегії вилучення існують у сплячому режимі?
У сплячому режимі доступні такі стратегії отримання:
- Приєднатися до Fetching
- Пакетна вибірка
- Виберіть Отримання
- Додатково виберіть Отримання
38. Яким чином виконується відображення об’єктів Java з таблицями бази даних?
Щоб зіставити об’єкти Java з таблицями бази даних, нам потрібно, щоб імена властивостей компонентів Java були такими ж, як імена стовпців таблиці бази даних. Потім зіставлення надається у файлі hbm.xml, як зазначено нижче:
39. Що таке похідні властивості в hibernate?
Похідні властивості – це ті властивості, які не зіставлені з жодними стовпцями таблиці бази даних. Такі властивості обчислюються під час виконання шляхом обчислення будь-яких виразів.
40. Що означає іменований запит SQL у сплячому режимі та як він використовується?
Іменовані SQL-запити – це ті запити, які визначені у файлі відображення та викликаються за потреби будь-де.
Наприклад, ми можемо написати SQL-запит у нашому файлі зіставлення XML таким чином:
Тоді цей запит можна викликати наступним чином:
List students = session.getNamedQuery("studentdetails")
.setString("TomBrady", name)
.setMaxResults(50)
.list();
41. Яка різниця між методами load() і get() у сплячому режимі?
Методи Load() призводять до виняткової ситуації, якщо необхідні записи не знайдено в базі даних, тоді як метод get() повертає значення null, якщо записи з ідентифікатором не знайдено в базі даних.
Отже, в ідеалі ми повинні використовувати метод Load() лише тоді, коли ми впевнені в наявності записів щодо id.
42. Яке використання властивості версії в сплячому режимі?
Властивість версії використовується в сплячому режимі, щоб дізнатися, чи перебуває об’єкт у перехідному чи відокремленому стані.
43. Що таке атрибутивно-орієнтоване програмування?
У програмуванні, орієнтованому на атрибути, розробник може додати мета-дані (атрибути) у вихідний код Java, щоб додати більше значення коду. Для Java (сплячий режим) програмування, орієнтоване на атрибути, увімкнено механізмом під назвою XDoclet.
44. Яка користь від session.lock() у сплячому режимі?
Метод session.lock() класу сесії використовується для повторного приєднання об’єкта, який було від’єднано раніше. Цей метод повторного підключення не перевіряє синхронізацію даних у базі даних під час повторного підключення об’єкта, тому може призвести до відсутності синхронізації даних.
45. Чи підтримує Hibernate поліморфізм?
Так, hibernate повністю підтримує поліморфізм. Запити щодо поліморфізму та асоціації поліморфізму підтримуються в усіх стратегіях зіставлення в режимі глибокого сну.
46. Що таке три моделі успадкування hibernate?
Hibernate має наступні три моделі успадкування:
- Таблиці за класом бетону
- Таблиця на ієрархію класів
- Таблиця на підклас
47. Як ми можемо відобразити класи як незмінні?
Якщо ми не хочемо, щоб програма оновлювала або видаляла об’єкти класу в сплячому режимі, ми можемо зробити клас незмінним, встановивши mutable=false
48. Що таке загальний потік сплячого режиму з використанням RDBMS?
Загальний потік сплячого режиму, що включає RDBMS, такий:
- Завантажити файл конфігурації та створити об’єкт класу конфігурації.
- Використовуючи об’єкт конфігурації, створіть об’єкт sessionFactory.
- З sessionFactory отримайте один сеанс.
- Створити HQL запит.
- Виконайте HQL-запит і отримайте результати. Результати будуть у вигляді списку.
49. Що таке відображення світлових об’єктів?
Відображення легких об’єктів — це один із рівнів якості ORM, на якому всі сутності представлені як класи та відображаються вручну.
50. Яка різниця між керованими асоціаціями та сплячими асоціаціями?
Керовані асоціації пов’язані з постійністю керування контейнером і є двонаправленими, тоді як асоціації сплячого режиму є односпрямованими.
Ці запитання для співбесіди також допоможуть вам у життєдіяльності (усному)
Хороша колекція qns…
Чудове пояснення,,,,
Не могли б ви також додати запитання нижче
Як ми можемо викликати збережені процедури в сплячому режимі?
Упорядкована колекція та сортована колекція
що таке стійкий стан
Як налаштована брудна перевірка
Налаштувати інтерфейс зворотного виклику
Як зробити об'єкт від'єднаним
що станеться, якщо я від’єднаю тимчасовий об’єкт
пояснити кожен рівень ORM у Hibernate
Як увімкнути/вимкнути cahce першого та другого рівнів
Як ми можемо прив’язати фабрику сеансу глибокого сну до JNDI?
Яка різниця між методами load() і get() у сплячому режимі?
різниця між session.lock() і session.merge()
Як клас відображається як незмінний і чому
Як ми можемо використовувати нові спеціальні інтерфейси для покращення функціональності вбудованих інтерфейсів hibernate?
Привіт, адміністраторе. Буде корисно, якщо ви додасте це запитання або важливіші питання, схожі на mcq, для конкурсного іспиту