Статьи

Hibernate Интервью Вопросы и ответы — ULTIMATE Список

Hibernate, для интервью-вопросы-ответы Это краткое изложение наиболее важных вопросов, касающихся Hibernate Framework, на которые вас могут попросить ответить в интервью! Вам не нужно беспокоиться о вашем следующем тесте собеседования, потому что Java Code Geeks здесь для вас!

Большинство вопросов, которые вам могут быть заданы, собраны в списке ниже. Наши вопросы об интервью Hibernate проведут вас через полную структуру Hibernate и обеспечат полное понимание структуры, используя вопросы и ответы. Вопросы разбиты на категории для предоставления информации по каждому модулю по мере необходимости. С помощью этих вопросов об интервью Hibernate мы гарантируем, что вам больше не нужно беспокоиться об интервью, связанных с платформой Hibernate.

Вопрос и ответы начинаются с введения основы и ее концепций. Они распространяются на конфигурацию, использование и концепции. Чтобы немного углубиться, мы рассмотрим вопросы, относящиеся к уровням кэширования и конфигурациям, связанным с кэшированием. Вопросы заканчиваются объяснением различных особенностей гибернации, которые облегчают ваше программирование.

Давайте начнем с вводной части.

Содержание

Основы гибернации

1. Что такое ORM?

Java — это объектно-ориентированный язык программирования. В Java мы отображаем почти каждый объект реального мира в объект. ORM является аббревиатурой от Object Relational Model. ORM — это основная концепция Hibernate. ORM — это процесс отображения таблиц базы данных в классы Java или объекты Java. Каждый столбец в базе данных сопоставлен с другой переменной в Java. Таким образом, ORM помогает нам упростить процесс взаимодействия с базой данных в Java.

2. Что такое фреймворк Hibernate?

Hibernate Framework — это набор классов Java, созданный для упрощения процесса подключения и взаимодействия с базой данных. Hibernate Framework обеспечивает промежуточный уровень кода между базой данных и кодом Java. Этот уровень облегчает настройку базы данных, пула соединений, выполнения запросов, а также кэширования. Hibernate позволяет разработчику оставаться значительно независимым от изменений базы данных.

3. Что такое диалект?

Диалект — это набор файлов кода или иногда один файл, который определяет процесс подключения базы данных к классу Java. Диалект в Hibernate играет роль понимания связи, происходящей с базовой базой данных. Всякий раз, когда изменяется базовая база данных, все, что вам нужно изменить в конфигурации Hibernate, — это диалект и учетные данные базы данных. Это верно, пока код использует HQL-запросы.

4. Что такое HQL-запросы?

HQL — это сокращение от языка запросов Hibernate. HQL — это более простой способ писать запросы независимо от базы данных. HQL-запросы понятны инфраструктуре Hibernate. Они преобразуются в обычные запросы SQL в зависимости от используемого диалекта базы данных. Обычно без фреймворка Hibernate процесс изменения базовой базы данных включает в себя изменение всех запросов. В Hibernate Framework, если код использует HQL-запросы, процесс изменения базовой базы данных довольно прост. Все, что требуется сделать, это изменить диалект и учетные данные БД, а остальная часть позаботится об этом.

5. Каковы возможные способы настройки Hibernate Framework?

Hibernate Framework может быть настроен с использованием XML, а также аннотаций классов Java. Однако функция аннотации на основе классов Java появилась только в Hibernate 4.0. Следовательно, любая более низкая версия поддерживает только конфигурацию на основе XML.

6. Что такое пул соединений?

В корпоративном приложении приложение будет поражено многочисленными пользователями. Если сервер приложений устанавливает новое соединение для каждого запроса, это будет нагрузкой для сервера базы данных. С другой стороны, если есть только одно соединение с базой данных, это приведет к огромным накладным расходам на запросы на запрос. Следовательно, предпочтительно иметь ограниченное количество соединений с базой данных, предварительно настроенных в Hibernate. Каркас Hibernate гарантирует, что новые соединения будут установлены, пока не будет достигнут определенный максимальный предел. После ограничения, Hibernate повторно использует объект подключения к базе данных. Таким образом, пул соединений Hibernate представляет собой набор объектов соединений базы данных, созданных для управления параллельным взаимодействием с базой данных.

7. Что такое JPA?

JPA — это аббревиатура для API персистентности Java. Этот API из Java предоставляет определенные предопределенные аннотации в Java, что делает базу данных ORM проще. Все, что вам нужно сделать, это разместить эти аннотации над именем класса и переменными, чтобы сопоставить их с таблицей базы данных.

8. Как JPA помогает в Hibernate Framework?

До запуска и принятия JPA в качестве стандартов ORM Hibernate использовал сопоставление XML для строгой привязки объектов Value гибернации к объектам базы данных. Это отображение основано на XML и, следовательно, подвержено большим ошибкам и требует больше усилий при настройке отображения. Благодаря JPA Hibernate упростил процесс отображения, включив сканирование аннотаций JPA. Эти аннотации устраняют необходимость использования XML для отображения.

9. Каковы преимущества использования Hibernate над JDBC?

JDBC — соединение с базой данных Java — это стандартный API соединения с базой данных, для которого требуется код драйвера базы данных и отдельный код соединения с базой данных для каждой базы данных. JDBC понимает только стандартные запросы SQL. С Hibernate Framework драйверы базы данных поставляются предварительно загруженными. Нет необходимости загружать новый драйвер каждый раз, когда вы меняете базу данных. Более того, Hibernate поддерживает как SQL, так и HQL. Если разработчик использует HQL, hibernate позаботится о подготовке запроса SQL для базовой базы данных с использованием настроенного диалекта. Кроме того, Hibernate также обеспечивает управляемое кэширование с несколькими конфигурациями.

10. Какие важные интерфейсы предоставляет Hibernate?

Спящий режим, используя следующие важные интерфейсы.

Сессия (org.hibernate.Session)

Session — это однопоточный и недолговечный объект, созданный для цикла связи между приложением Java и хранилищем базы данных. Это оболочка над JDBC java.sql.Connection классом и работает как фабрика для org.hibernate.Transaction . Экземпляр класса, реализующего этот интерфейс, должен создаваться только тогда, когда это необходимо, и должен быть уничтожен, как только мы закончим с его использованием. Этот объект обеспечивает интерфейс между ядром Java и средой гибернации для операций CRUD.

SessionFactory (org.hibernate.SessionFactory)
Как видно из названия, этот интерфейс управляет функциями подписи для создания и уничтожения объектов Session. Класс, реализующий SessionFactory, имеет неизменный потокобезопасный кеш, который поддерживается для управления сеансами. Кроме того, он поддерживает кэш предварительно скомпилированных отображений базы данных для обеспечения более быстрой работы базы данных.

Сделка (org.hibernate.Transaction)
Транзакция, как следует из названия, представляет собой интерфейс, содержащий определения функций для управления взаимодействием с базой данных. Транзакция — это недолговечный поток, который заботится о получении данных из приложения Java и их доставке в базу данных в форме запроса. Транзакция похожа на сеанс, который уничтожается после каждой транзакции базы данных.

Настройка Hibernate Framework

11. Какие конфигурации используются в Hibernate Framework?

Фреймворк Hibernate — это огромный фреймворк, предназначенный для поддержки практически всех операций с базами данных. Для настройки такой структуры необходимо настроить несколько объектов. Они включают:

  • Учетные данные базы данных
  • База данных диалект
  • URL базы данных
  • Уровни кеширования
  • ORM картирование
  • Конфигурация пула соединений
  • Режим создания таблицы — создание / обновление

Hibernate поставляется со значениями по умолчанию практически для всех конфигураций, не связанных с базой данных, таких как размер пула подключений, уровни кэширования, режим создания таблиц и другие. Таким образом, несмотря на множество настраиваемых аспектов, он позволяет начать с минимальной конфигурации.

12. Что такое файл конфигурации Hibernate?

Файл конфигурации Hibernate включает в себя специфические конфигурации базы данных, которые требуются для начала подключения к базе данных с использованием Hibernate Framework. Файл конфигурации обычно представляет собой XML-документ с именем hibernate.cfg.xml. Если вы предпочитаете использовать конфигурацию на основе Java, вам нужно создать файл свойств, подобный показанному ниже.

01
02
03
04
05
06
07
08
09
10
11
################### JDBC Configuration ##########################
jdbc.driverClassName=org.mysql.jdbcDriver
jdbc.url=jdbc:mysql://localhost:3306/mydb;shutdown=true
jdbc.username=root
jdbc.password=xxxxxx
 
################### Hibernate Configuration ##########################
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.show_sql=true
hibernate.hbm2ddl.auto=update
hibernate.generate_statistics=true

Этому файлу может быть присвоено любое имя. Однако необходимо загрузить эту конфигурацию в файл Java, используя это имя файла. Пример кода для загрузки файла свойств в конфигурации Java показан ниже.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.core.io.ClassPathResource;
 
@Import({RepositoryConfig.class})
@Configuration
public class AppConfig
{
    //
    @Bean
    public PropertyPlaceholderConfigurer getPropertyPlaceholderConfigurer()
    {
        PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer();
        ppc.setLocation(new ClassPathResource("hibernate.properties"));
        ppc.setIgnoreUnresolvablePlaceholders(true);
        return ppc;
    }
}

Можно заметить, что в конфигурации на основе Java код класса также содержит несколько классов Spring Framework. Таким образом, этот образец относится к интеграции Hibernate с Spring. Обратите внимание на аннотации здесь. Эти аннотации определяют, что класс переносит конфигурацию для спящего режима.

13. Как Hibernate создает соединение с базой данных?

Hibernate читает настроенный диалект, чтобы решить, какой драйвер использовать. Hibernate поставляется в комплекте с jar-файлами драйверов баз данных. Эти банки аналогичны тем, которые используются для подключения к базе данных с использованием JDBC. На основе диалекта Hibernate динамически регистрирует соответствующий класс драйверов и использует URL-адрес и учетные данные для подключения к базе данных с использованием JDBC в бэкэнде.

14. Каковы возможные способы настройки отображения объекта-таблицы?

В Hibernate есть два возможных способа настройки отображения. Один из двух способов — создать файл XML, определяющий соответствие между столбцом базы данных и переменной класса. Этот XML известен как отображающий XML. Запись каждого такого XML-файла должна быть сделана в hibernate.cfg.xml, чтобы Hibernate распознал и прекомпилировал эти привязки.

Другой способ настроить бин — использовать аннотированный Java-класс для отображения. Аннотированные классы Java автоматически сканируются, если путь к папке указан в hibernate.cfg.xml.

15. Какая аннотация используется для объявления класса как спящего компонента?

Аннотация @Entity используется для объявления класса как объекта. Простой пример показан ниже.

1
2
3
4
5
6
@Entity
@Table(name="users")
public class User{
String username;
String password;
}

16. Как мне указать имя таблицы, связанной с объектом, используя аннотацию?

Как видно из приведенного выше кода, аннотация @Table используется для указания имени таблицы базы данных, связанной с объектом. Для этого объекта требуется обязательное name атрибута, которое указывает имя таблицы, как в базе данных.

17. Как переменная в сущности соединяется со столбцом базы данных?

По умолчанию Hibernate ищет имена столбцов, соответствующие именам переменных в классе. Однако также возможно указывать разные имена переменных и связывать их с соответствующими столбцами в базе данных.

18. Как указать другое имя столбца для отображения переменных?

Аннотация @Column используется для определения имени столбца, связанного с переменной. В отсутствие этой аннотации Hibernate предварительно компилирует отображение переменной, сопоставленной со столбцом с тем же именем. Пример использования этой аннотации показан ниже:

1
2
3
4
5
6
7
@Entity
@Table(name="users")
public class User{
@Column(name="user_name")
String username;
String password;
}

Атрибут name является обязательным атрибутом для указания имени столбца, отличного от имени переменной. Из приведенного выше кода можно понять, что столбец user_name связан с переменной username

19. Как мы указываем переменную, которая будет первичным ключом для таблицы?

Hibernate может создавать таблицы базы данных для приложения непосредственно на основе отображений, представленных в коде Java. В таком случае Hibernate требует знать, какие столбцы должны быть первичными ключами. Это можно настроить с помощью аннотации @Id . Hibernate не только заботится о создании этого столбца как столбца первичного ключа, но также проверяет свое уникальное ограничение при каждой вставке и обновлении базы данных.

20. Как мы определяем логику генерации значения первичного ключа?

Значения первичного ключа могут быть сгенерированы различными способами в зависимости от базы данных. Например, в базе данных MySQL первичные ключи могут быть сгенерированы с использованием алгоритма автоинкрементации, в то время как в базе данных Oracle вам необходимо создать последовательность и использовать ее для автоматического увеличения значения для первичного ключа. Эти методы генерации могут быть указаны с помощью приведенного ниже кода аннотации.

01
02
03
04
05
06
07
08
09
10
11
12
13
@Entity
@Table(name="users")
public class User{
 
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
int userid;
 
@Column(name="user_name")
String username;
 
String password;
}

Столбец идентификатора пользователя здесь определен как первичный ключ, автоматически сгенерированный с использованием стратегии идентификации. Возможные значения для strategy включают в себя:

  • GenerationType.AUTO
  • GenerationType.IDENTITY
  • GenerationType.SEQUENCE
  • GenerationType.TABLE

21. Как вы настраиваете диалект в hibernate.cfg.xml?

Конфигурация диалекта в xml включает определение свойства с именем hibernate.dialect. Пример XML-тега для определения диалекта показан ниже:

1
2
3
<property name="org.hibernate.dialect.MySQLDialect">
org.hibernate.dialect.MySQLDialect
</property>

22. Как настроить URL базы данных и учетные данные в hibernate.cfg.xml?

Hibernate Framework может быть настроен с использованием различных значений свойств. В вышеупомянутых вопросах мы обсуждали, как настроить структуру, используя файл свойств. Конфигурация в XML очень похожа. Нам просто нужно создать соответствующие теги свойств с именами, аналогичными тем, которые указаны в файле свойств выше. Пример URL базы данных конфигурации и учетных данных приведен ниже.

01
02
03
04
05
06
07
08
09
10
11
<property name = "hibernate.connection.url">
   jdbc:mysql://localhost/mydb
</property>
 
<property name = "hibernate.connection.username">
   root
</property>
 
<property name = "hibernate.connection.password">
   password
</property>

При выполнении приложения Java платформа Hibernate предварительно компилирует код для подключения к базе данных и создает пул подключений, чтобы уменьшить накладные расходы на подключение к базе данных во время выполнения запросов.

23. Как настроить размер пула соединений?

Размер пула соединений в Hibernate имеет два значения — минимальный размер пула и максимальный размер пула. Эти размеры можно настроить с помощью свойств hibernate.c3p0.min_size и hibernate.c3p0.max_size . Эти свойства можно настроить так же, как показано выше для учетных данных базы данных.

24. Как настроить сканирование папок для компонентов Hibernate?

Сканирование папки в спящем режиме — это функция, поддерживаемая Spring. Spring Framework предоставляет поддержку для сканирования папок и подготовки сопоставления в виде компонентов Hibernate без необходимости создания XML-кода преобразования Hibernate. Чтобы настроить папку для сканирования с помощью Spring Framework с Hibernate, используйте следующий код:

1
2
3
4
5
6
<bean id="sessionFactory"
  class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"
  p:dataSource-ref="dataSource"
  p:configLocation="WEB-INF/classes/hibernate.cfg.xml"
  p:packagesToScan="com.example.model"
/>

24. Как настроить Hibernate bean без Spring Framework?

В отсутствие Spring Framework конфигурация bean-компонентов выполняется с использованием соответствующих xml-файлов отображения. Эти XML-файлы необходимо добавить в XML-файл конфигурации hibernate, чтобы Hibernate обнаружил их. Также возможно настроить фреймворк так, чтобы он сканировал записи XML. Ниже приведен код, демонстрирующий настройку спящего режима для сканирования файлов конфигурации компонента.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
<hibernate-configuration>
   <session-factory>
    
      <property name = "hibernate.dialect">
         org.hibernate.dialect.MySQLDialect
      </property>
       
      <property name = "hibernate.connection.driver_class">
         com.mysql.jdbc.Driver
      </property>
       
      <!-- Assume test is the database name -->
       
      <property name = "hibernate.connection.url">
         jdbc:mysql://localhost/test
      </property>
       
      <property name = "hibernate.connection.username">
         root
      </property>
       
      <property name = "hibernate.connection.password">
         root123
      </property>
       
      <!-- List of XML mapping files -->
      <mapping resource = "User.hbm.xml"/>
       
   </session-factory>
</hibernate-configuration>

В приведенном выше коде часть отображения указывает путь к файлу отображения отображения гибернации для компонента класса User.

Hibernate Кэширование и реализация

Кэширование — важная функция, которая требуется для приложений уровня предприятия, ежедневно обрабатывающих тысячи запросов. Фреймворк Hibernate изначально предполагает кеширование результатов запросов на разных уровнях. Эти уровни кэширования настраиваются в соответствии с вашими потребностями. Существует три типа уровней кэширования:

  1. Кэширование на уровне сеанса. Кэширование на уровне сеанса реализовано Hibernate в качестве уровня кэширования по умолчанию. Это кэширование включает функции кэширования объектов в сеансе. Эти кэшированные объекты находятся в самой памяти сеанса.
  2. Кэш второго уровня. Кэш второго уровня отвечает за кеширование объектов между сеансами. Когда включено кэширование второго уровня, сначала выполняется поиск объектов в кэше, а затем, если не найдено, выполняется запрос к базе данных для его поиска. Кэш второго уровня будет использоваться всякий раз, когда объекты загружаются с использованием их первичного ключа. Кэш-объекты второго уровня также извлекают свои соответствующие ассоциации и находятся в отдельном стеке памяти, отличном от сеанса.
  3. Кэш запросов: кэш вопросов используется для хранения последствий запроса. В тот момент, когда включено кэширование запроса, выходные данные запроса сопоставляются с запущенным запросом и параметрами. Каждый раз, когда запрос отпускается, структура хранилища проверяет сочетание параметров и запроса. Если результаты найдены в кеше, они возвращаются, как правило, запускается транзакция базы данных. Как должно быть очевидно, это не умная мысль, чтобы зарезервировать запрос в том случае, если он имеет различные параметры, поскольку тогда одиночный параметр может принимать различные качества. Для каждой из этих смесей результаты хранятся в памяти. Это может привести к большему использованию памяти.

25. Как настроить кеширование второго уровня Hibernate?

Кэширование второго уровня в спящем режиме можно настроить с помощью библиотеки EHCache. Чтобы добавить зависимость EHCache с помощью maven, используйте следующий код зависимости.

1
2
3
4
5
<dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-ehcache</artifactId>
        <version>4.3.5.Final</version>
</dependency>

После добавления этой библиотеки Hibernate Framework должен быть настроен на использование библиотеки для кэширования. Чтобы настроить кэширование второго уровня с помощью EHCache, используйте приведенный ниже код.

1
2
3
4
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.use_query_cache">true</property>
<property name="net.sf.ehcache.configurationResourceName">/myehcache.xml</property>

26. Каковы различные состояния бина сущности?

Вхождение элемента bean может существовать в одном из трех состояний.

Переходный процесс : когда объект никогда не продолжается или не связан с каким-либо сеансом, он находится в переходном состоянии. Временные случаи могут быть подвержены усердному влиянию путем вызова save() , saveOrUpdate() или saveOrUpdate() . На устойчивые примеры может повлиять переходный процесс, вызвав delete ().

Постоянно : когда вопрос связан с единственной в своем роде сессией, он находится в постоянном состоянии. Любое вхождение, возвращаемое методами get() или load() , является стойким.

Detached : Когда объект уже безжалостен, но не связан ни с одним сеансом, он находится в отключенном состоянии. Отключенные случаи могут быть определены путем вызова refresh() , saveOrUpdate() , lock() или replicate() . Условие переходного или отключенного примера также может подвергаться постоянному влиянию как еще один постоянный случай, вызывая merge() .

27. Какова цель Session.beginTransaction ()?

В Hibernate каждый обмен данными поддерживается с помощью транзакции. Всякий раз, когда начинается новый обмен данными, вызывается функция Session.beginTransaction для запуска транзакции.

28. Что можно сделать, чтобы завершить транзакцию в Hibernate?

Для завершения транзакции в спящем режиме могут быть два действия:

  1. совершить
  2. отмена

Всякий раз, когда транзакция совершается, обмен данными записывается в базу данных. В случае отката данные транзакции сбрасываются и никогда не записываются и не обновляются в базе данных.

29. Как мы совершаем транзакцию в Hibernate?

Объект транзакции в Hibernate может быть зафиксирован или откатан. Для выполнения этого действия мы используем приведенный ниже код.

1
2
3
4
5
6
7
8
9
tx = Session.beginTransaction();
...
...
...
//Do something with transaction
...
...
...
tx.commit();

Как видно, вызов функции tx.commit() выполняет задачу tx.commit() транзакции в базе данных. Для отката процедура остается прежней. Все, что вам нужно сделать, это изменить вызов функции на tx.rollback() .

30. Какие различные типы отношений доступны в отображении Hibernate?

Существует три различных типа отношений, которые могут быть реализованы в спящем режиме. Они есть:

  1. Индивидуальное отображение
  2. Отображение один-ко-многим
  3. Отображение «многие ко многим»

31. Какая аннотация используется для определения сопоставления в файлах Java?

Чтобы определить отображение в файлах Java, есть три разных аннотации, которые можно использовать по мере необходимости. Аннотации:

  1. @OneToOne
  2. @ManyToOne
  3. @OneToMany

Использование аннотаций вполне понятно. Для аннотации требуется обязательный атрибут mappedBy для идентификации связанной таблицы.

32. Что такое Hibernate Session и как его получить?

Сессия Hibernate — это интерфейс между уровнем кода Java и каркасом Hibernate. Это основной интерфейс, используемый для обработки транзакций базы данных. Жизненный цикл сеанса начинается с начала транзакции и заканчивается в конце транзакции.
Начиная с JPA 2.0, объект Session можно получить с помощью приведенного ниже кода, который использует EntityManager

1
SessionFactory sessionFactory = entityManager.getEntityManagerFactory().unwrap(SessionFactory.class);

33. Можно ли подключить несколько баз данных в одном приложении Java с помощью Hibernate?

Да. Практически можно подключить одно приложение Java к нескольким базам данных, используя два отдельных файла конфигурации Hibernate и две отдельные фабрики сеансов. Эти файлы конфигурации гибернации содержат различные конфигурации диалектов, относящихся к соответствующей базе данных. Объекты исключительно отображаются в соответствующую конфигурацию базы данных. Таким образом, с двумя разными параллельными объектами SessionFactory можно подключить несколько баз данных.

34. Что такое критерий запроса в Hibernate?

Критерий запроса в Hibernate — это сложный запрос Hibernate, который позволяет разработчику задавать несколько условий для извлечения данных из базы данных, используя запрос Hibernate в бэкэнде. Запрос критериев создается с использованием объекта Criteria . Этот критерий объекта позднее объединяется с ограничениями для получения окончательного результата. Выполнение запроса простого критерия показано в коде ниже:

1
2
3
Criteria cr = session.createCriteria(User.class);
cr.add(Restrictions.eq("user_name", datsabk));
List results = cr.list();

Приведенный выше запрос извлекает список пользователей с атрибутом username, имеющим значение datsabk . Таким образом, класс Criteria обеспечивает необходимую реализацию для упрощения сложных запросов с использованием объектов.

35. Что такое ленивая загрузка в Hibernate?

Как обсуждалось выше, можно отобразить объекты с другими объектами, используя аннотации в Hibernate. Когда вы выбираете такие объекты, hibernate может загружать связанные объекты двумя способами. Один из них — загрузить их вместе с родительским объектом. Это часто занимает много времени из-за объединений и умножения вовлеченных записей.

Другой способ загрузки называется «Ленивая загрузка». Ленивая загрузка означает, что Hibernate будет загружать связанный объект только тогда, когда вы на самом деле пытаетесь получить доступ к значениям соответствующего объекта. Это не только экономит память во время выполнения, но и ускоряет запрос.

36. Что такое метод load () сеанса Object?

Этот метод используется для загрузки прокси-объекта без фактического попадания в базу данных. Таким образом, это спасает вас от попадания в базу данных и загружает данные из кеша. Это явный способ сообщить hibernate о необходимости выбора данных из кэша.

37. Является ли объект Hibernate Session поточно-ориентированным?

Объект сеанса Hibernate — это глобальный объект, используемый для управления сеансами с базой данных. Этот объект может быть передан через потоки для обмена данными. Таким образом, он расходуется несколькими потоками одновременно. Следовательно, это не потокобезопасный объект.

38. Поддерживает ли Hibernate полиморфизм?

Да. Hibernate по своей природе поддерживает полиморфизм. Hibernate классы в основном поддерживают свои операции посредством самого полиморфизма.

39. Сколько сессий Hibernate существует в любой момент времени в приложении?

Hibernate сессия является общим объектом. В любой момент времени существует только один общий объект сеанса, который помогает в управлении транзакциями и получении соединений из пула соединений. Следует отметить, что это верно только при использовании одной конфигурации базы данных. В случае нескольких конфигураций базы данных Hibernate создаст отдельный объект сеанса для поддержки сопоставления и транзакций для другой базы данных.

Вывод

Это краткое изложение некоторых наиболее важных понятий и терминов, используемых в Hibernate. На эти вопросы были даны ответы с целью подготовить интервью. Они охватывают все важные концепции, включая настройку, кэширование и реализацию Hibernate Framework. Тем не менее, всегда есть что исследовать.

Итак, теперь вы готовы к собеседованию! Не забудьте проверить раздел « Примеры» !

Если вам понравилось, подпишитесь на нашу новостную рассылку, чтобы получать еженедельные обновления и бесплатные обзоры! Кроме того, ознакомьтесь с нашими курсами для повышения квалификации!

Вы можете оставить свои комментарии, и мы включим их в статью!