Специализация
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 в телеграм
В чём преимущества и недостатки написания SQL-запросов вручную по сравнению с использованием ORM (например, Hibernate)?
Ручной SQL даёт полный контроль над запросами, может быть быстрее и понятнее для сложной логики, но требует больше кода и повышает риск ошибок. ORM (например, Hibernate) автоматизирует работу с БД, ускоряет разработку и повышает читаемость, но может быть менее гибким и производительным в сложных случаях.
Как бороться с проблемой N+1 в Hibernate?
Fetch Join: JOIN FETCH в JPQL.
EntityGraph: Аннотация @EntityGraph.
Batch Size: @BatchSize для ленивой загрузки.
Как вы создавали и использовали кастомные запросы в Hibernate?
Кастомные запросы в Hibernate создаются primarily с помощью JPQL (язык запросов, похожий на SQL, но работающий с сущностями) или нативного SQL. JPQL-запросы определяются с помощью аннотации @Query прямо в репозитории. Нативные SQL-запросы используются для сложных, специфичных для БД операций, но они привязывают код к конкретной СУБД.
Почему часто используется Hibernate / JPA?
Hibernate и JPA позволяют работать с базой данных через объекты, а не SQL. Они сокращают количество шаблонного кода и упрощают CRUD-операции. ORM берёт на себя маппинг таблиц на сущности и управление связями. Это ускоряет разработку и делает код более читаемым. Поэтому JPA используется в большинстве Spring backend-проектов.
Какие альтернативы Hibernate / JPA существуют?
Основные альтернативы JPA — это JDBC, Spring JdbcTemplate и SQL-мапперы. Они дают больше контроля над SQL, но требуют больше ручного кода. Также существуют более лёгкие ORM и DSL-библиотеки. Выбор альтернативы зависит от сложности запросов и требований к производительности.
Использовал ли ты JPA и в чём отличие JPA от Hibernate?
Какие уровни кэша существуют в Hibernate?
Как работает кэш первого уровня Hibernate?
Рейтинг:
5
Сложность:
6
JPA — это спецификация, описывающая, как работать с ORM в Java. Hibernate — это конкретная реализация этой спецификации. JPA задаёт интерфейсы и правила, а Hibernate реализует их и добавляет свои возможности. Код, написанный под JPA, более переносим между реализациями. Hibernate можно использовать как JPA-провайдер.
Рейтинг:
5
Сложность:
6
В Hibernate существует несколько уровней кэша.
Кэш первого уровня включён всегда и привязан к сессии.
Кэш второго уровня является опциональным и разделяется между сессиями.
Также существует кэш запросов.
Эти механизмы снижают количество обращений к базе данных.
Рейтинг:
5
Сложность:
5
Кэш первого уровня привязан к Session.
Он хранит все загруженные и сохранённые сущности.
Повторный запрос той же сущности не обращается к базе данных.
Hibernate возвращает объект из кэша.
Это гарантирует уникальность сущностей в рамках сессии.
Рейтинг:
2
Сложность:
6
Рейтинг:
1
Сложность:
6
Рейтинг:
2
Сложность:
7
Рейтинг:
5
Сложность:
5
Рейтинг:
4
Сложность:
6