👍12❤6🔥1
В новой версии Hibernate перешёл на Apache License 2.0 и обновил базовые зависимости — теперь по умолчанию используются Java 17 и Jakarta Persistence 3.2.
Также была проведена очистка от устаревших модулей: вместо HCANN теперь применяется Hibernate Models, а модули hibernate-ucp и TeradataDialect удалены.
Среди ключевых изменений:
▶️ @SoftDelete теперь поддерживает стратегию с временной меткой — фиксируется точное время удаления записи▶️ @EmbeddedColumnNaming позволяет настраивать префиксы колонок для embedded-полей с помощью шаблона▶️ @NamedEntityGraph даёт возможность описывать графы загрузки в виде строки, без лишней аннотационной обвязки▶️ Методы Session.findMultiple() и StatelessSession.getMultiple() позволяют загружать несколько сущностей по ID одной командой с учётом BatchSize▶️ Вместо старых hints теперь используются типобезопасные FindOption, LockOption и RefreshOption▶️ Добавлено новое API для построения запросов через SelectionSpecification и MutationSpecification▶️ Метод Session.getManagedEntities() предоставляет доступ ко всем сущностям в кэше первого уровня▶️ Расширена поддержка enum: теперь CHECK-ограничения создаются и для перечислений с AttributeConverter▶️ Поддерживаются SQL-функции для работы с JSON и XML, включая json_agg(), json_value(), xmlquery() и другие▶️ Появилась поддержка set-returning functions — таких как unnest(), generate_series() и json_table()
Кроме того, Hibernate окончательно отказывается от схемы маппинга
hbm.xml
— ей на смену пришёл формат mapping.xml
, а преобразование старых файлов возможно автоматически.tags: #статья #полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤6👨💻4
Please open Telegram to view this post
VIEW IN TELEGRAM
😁37🤣21❤9👍1
Чем отличается JDBC от Hibernate?
Ответ:
При использовании JDBC разработчик сам управляет соединениями, пишет SQL, обрабатывает ResultSet, а в Hibernate всё это абстрагируется: объекты автоматически мапятся на таблицы, запросы могут писаться через HQL или Criteria API, а управление транзакциями и кэшированием встроено.
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍5👨💻2
@Transactional
В статье рассказывается, как устроена аннотация @Transactional в Spring и почему иногда транзакции ведут себя не так, как вы ожидаете.
Автор подробно объясняет, как работают прокси, откаты, вложенные транзакции и связь с JPA — с примерами кода, подводными камнями и разбором типичных ошибок.
tags: #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤5
Что такое интерфейс Executor и зачем он нужен?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16🔥6
Функциональный интерфейс — это интерфейс, который определяет только один абстрактный метод. Это позволяет передавать поведение как значение — например, в виде лямбды или ссылки на метод.
Рассмотрим простейший пример:
@FunctionalInterface
interface Greeting {
void say(String message);
}
Greeting g = msg -> System.out.println("Привет, " + msg);
g.say("мир!");
Аннотация @FunctionalInterface не обязательна, но рекомендуема — она защищает от случайного добавления лишнего абстрактного метода.
Интерфейс может содержать сколько угодно
default-
и static
-методов и при этом оставаться функциональным, так как они не считаются абстрактными.В Java предусмотрен набор стандартных функциональных интерфейсов — в пакете
java.util.function
. Вот наиболее часто используемые:▶️ Predicate<T> — проверяет условие, возвращает true или false▶️ Function<T, R> — преобразует один тип в другой▶️ Consumer<T> — принимает значение, ничего не возвращает▶️ Supplier<T> — возвращает значение, ничего не принимает▶️ UnaryOperator<T> и BinaryOperator<T> — частные случаи Function, когда вход и выход одного типа
Пример использования Predicate:
Predicate<String> isLong = s -> s.length() > 5;
System.out.println(isLong.test("Java")); // false
Функциональные интерфейсы активно используются в Stream API, Optional, Comparator, CompletableFuture и других частях стандартной библиотеки. Это удобный способ описать поведение без лишнего кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤24👍6🔥4👨💻2
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣35❤11😁5
Что такое Redis и зачем он используется?
Ответ:
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥7❤3
Многие новички в программировании привыкают к тому, что для запуска Java-приложения достаточно создать Gradle/Maven-проект, нажать кнопку в IDE — и все работает.
Но стоит выйти за рамки стандартных сценариев, как процесс сборки превращается в “черный ящик”, а разобраться, что происходит под капотом, становится непросто.
В статье автор объясняет, как работает компиляция в Java, показывает, как вручную собрать и запустить программу, а затем шаг за шагом подводит к созданию собственной системы сборки.
tags: #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤6👍1
Какими основными способами можно конфигурировать бины в Spring?
Ответ:
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17👨💻3❤2🤔1
В этом цикле статей автор делится вопросами по SQL, с которыми вы можете столкнуться на собеседовании.
В первой части — базовые темы: первичный и внешний ключ, виды соединений, подзапросы, GROUP BY, CTE и другие часто спрашиваемые концепции.
Во второй — более продвинутые вопросы: подзапросы, индексы, оптимизация запросов, хранимые процедуры, транзакции, представления, функции, денормализация, типы индексов и триггеры.
tags: #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤3
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣33😁5💯4
Чем
CompletableFuture
отличается от Future
и в чём его преимущества?Ответ:
В отличие от Future, где результат приходится ждать вручную через get(), CompletableFuture позволяет задать цепочку действий, которые автоматически выполнятся после завершения задачи — без блокировки потока.
Он поддерживает композицию (например, через thenCompose, thenCombine), удобную обработку ошибок (exceptionally, handle), и может выполнять задачи в отдельных потоках (supplyAsync).
Это делает его особенно полезным для построения реактивных и параллельных программ, где важно управлять зависимостями между задачами и обрабатывать результат без лишней синхронизации.
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤5
В статье обсуждаются методы ускорения сборки проектов на Maven без необходимости перехода на другие системы.
Автор рассказывает, какие подходы позволяют сократить время сборки и улучшить производительность без кардинальных изменений в проекте.
tags: #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁25🤣16❤3
👍13❤8😁2