Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Почему часто используется Hibernate / JPA?
Hibernate и JPA позволяют работать с базой данных через объекты, а не SQL. Они сокращают количество шаблонного кода и упрощают CRUD-операции. ORM берёт на себя маппинг таблиц на сущности и управление связями. Это ускоряет разработку и делает код более читаемым. Поэтому JPA используется в большинстве Spring backend-проектов.
Какие альтернативы Hibernate / JPA существуют?
Основные альтернативы JPA — это JDBC, Spring JdbcTemplate и SQL-мапперы. Они дают больше контроля над SQL, но требуют больше ручного кода. Также существуют более лёгкие ORM и DSL-библиотеки. Выбор альтернативы зависит от сложности запросов и требований к производительности.
Какими способами можно писать запросы в Spring Data JPA?
В Spring Data JPA запросы можно писать разными способами: через имена методов, с помощью JPQL, native SQL и Criteria API. Также используются Specification для динамических условий. Самый простой способ — генерация запросов по имени метода. Более сложные запросы обычно пишутся явно. Выбор подхода зависит от сложности логики и требований к гибкости.
Для чего используется JPA Specification?
JPA Specification используется для построения динамических запросов к базе данных. Она позволяет описывать условия выборки в виде отдельных компонентов и комбинировать их. Это удобно, когда набор фильтров заранее неизвестен. Specification делает код более гибким и переиспользуемым. Чаще всего применяется вместе со Spring Data JPA.
Каким образом реализуется optimistic locking в JPA?
В JPA optimistic locking реализуется с помощью поля версии. Это поле помечается аннотацией @Version. При каждом обновлении сущности версия увеличивается. Если при сохранении версия в базе отличается от версии в объекте, JPA выбрасывает исключение. Таким образом предотвращается перезапись чужих изменений.
Использовал ли ты JPA и в чём отличие JPA от Hibernate?
Почему в JPA используется EntityManager, а не Session?
Что означает lazy-loading в JPA?
В каких случаях используются native SQL-запросы в Spring Data JPA?
Какие виды связей существуют в JPA?
Рейтинг:
5
Сложность:
6
JPA — это спецификация, описывающая, как работать с ORM в Java. Hibernate — это конкретная реализация этой спецификации. JPA задаёт интерфейсы и правила, а Hibernate реализует их и добавляет свои возможности. Код, написанный под JPA, более переносим между реализациями. Hibernate можно использовать как JPA-провайдер.
Рейтинг:
4
Сложность:
6
EntityManager — это интерфейс из спецификации JPA, а Session — интерфейс Hibernate. JPA использует EntityManager, чтобы код не зависел от конкретного ORM-провайдера. Это повышает переносимость и стандартизацию. Под капотом Hibernate всё равно использует Session. EntityManager — это абстракция над конкретной реализацией.
Рейтинг:
5
Сложность:
6
Lazy-loading означает, что связанные данные загружаются не сразу, а при первом обращении к ним. Это позволяет избежать лишних запросов к базе данных. По умолчанию многие связи в JPA являются lazy. Реализация обычно основана на прокси-объектах. При неправильном использовании может приводить к LazyInitializationException.
Рейтинг:
4
Сложность:
6
Native SQL-запросы используются, когда возможностей JPA или JPQL недостаточно. Они позволяют писать чистый SQL с учетом особенностей конкретной базы данных. Такой подход даёт больше контроля, но снижает переносимость кода. Используется осознанно и точечно.
Рейтинг:
5
Сложность:
6
В JPA существуют связи one-to-one, one-to-many, many-to-one и many-to-many. Они описывают, как объекты связаны друг с другом и как эта связь отображается в базе данных. Связи задаются с помощью аннотаций. Корректный выбор типа связи влияет на производительность и целостность данных. Это одна из базовых тем JPA.
Рейтинг:
5
Сложность:
5
Рейтинг:
4
Сложность:
6
Рейтинг:
5
Сложность:
5
Рейтинг:
5
Сложность:
6
Рейтинг:
5
Сложность:
6