Вопросы с собеседования 👩💻
Что такое Comparable?
Что такое Comparable?
Anonymous Quiz
2%
Класс для работы с числами
7%
Метод для сортировки
89%
Интерфейс для сравнения объектов
2%
Аннотация для методов
👍1
@OptimisticLock в Hibernate
Аннотация @OptimisticLock управляет оптимистичной блокировкой сущности в Hibernate, определяя, какие поля должны проверяться на изменение при обновлении.
Пакет: org.hibernate.annotations
Применяется к: классу сущности (@Entity) или отдельным полям.
Стратегии:
OptimisticLockType.VERSION (по умолчанию) — использует @Version.
OptimisticLockType.ALL — проверяет все поля.
OptimisticLockType.DIRTY — проверяет только измененные поля.
OptimisticLockType.NONE — отключает проверку.
Параметры и настройки
Атрибуты
type: Стратегия проверки изменений (VERSION, ALL, DIRTY, NONE).
excluded: Если true, поле исключается из проверки (при type = ALL/DIRTY).
Примеры
Жизненный цикл и обработка
Как работает оптимистичная блокировка?
При чтении сущности:
Hibernate запоминает состояние полей (для ALL/DIRTY).
При обновлении:
Генерируется SQL вида:
Если условие не выполняется (данные изменились), выбрасывается OptimisticLockException.
Интеграция с Spring Boot
Глобальная стратегия:
Обработка исключений:
Примеры использования
Пример 1: Проверка всех полей
Пример 2: Исключение поля
Проблемы
ALL/DIRTY: Требуют хранения исходного состояния (память).
Нет поддержки в JPA: Только Hibernate.
Когда использовать?
VERSION — для большинства случаев.
DIRTY — для больших сущностей с редкими конфликтами.
#Java #Training #Hard #Spring #Hibernate #OptimisticLock
Аннотация @OptimisticLock управляет оптимистичной блокировкой сущности в Hibernate, определяя, какие поля должны проверяться на изменение при обновлении.
Пакет: org.hibernate.annotations
Применяется к: классу сущности (@Entity) или отдельным полям.
Стратегии:
OptimisticLockType.VERSION (по умолчанию) — использует @Version.
OptimisticLockType.ALL — проверяет все поля.
OptimisticLockType.DIRTY — проверяет только измененные поля.
OptimisticLockType.NONE — отключает проверку.
Параметры и настройки
Атрибуты
type: Стратегия проверки изменений (VERSION, ALL, DIRTY, NONE).
excluded: Если true, поле исключается из проверки (при type = ALL/DIRTY).
Примеры
@Entity
@OptimisticLock(type = OptimisticLockType.ALL)
public class Account {
@Id
private Long id;
@OptimisticLock(excluded = true) // Не проверяется при обновлении
private String secretCode;
}
Жизненный цикл и обработка
Как работает оптимистичная блокировка?
При чтении сущности:
Hibernate запоминает состояние полей (для ALL/DIRTY).
При обновлении:
Генерируется SQL вида:
UPDATE account SET ... WHERE id = ? AND (secretCode IS NULL OR secretCode = ?)
Если условие не выполняется (данные изменились), выбрасывается OptimisticLockException.
Интеграция с Spring Boot
Глобальная стратегия:
spring.jpa.properties.hibernate.optimistic_lock.strategy=all
Обработка исключений:
@ExceptionHandler(OptimisticLockException.class)
public void handleConflict() { /* ... */ }
Примеры использования
Пример 1: Проверка всех полей
@Entity
@OptimisticLock(type = OptimisticLockType.ALL)
public class Product {
@Version
private Long version; // Дополнительная проверка
}
Пример 2: Исключение поля
@Entity
@OptimisticLock(type = OptimisticLockType.DIRTY)
public class User {
@OptimisticLock(excluded = true)
private LocalDateTime lastLogin;
}
Проблемы
ALL/DIRTY: Требуют хранения исходного состояния (память).
Нет поддержки в JPA: Только Hibernate.
Когда использовать?
VERSION — для большинства случаев.
DIRTY — для больших сущностей с редкими конфликтами.
#Java #Training #Hard #Spring #Hibernate #OptimisticLock
👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4🤣1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2🤣1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Всем привет!✌️
Сегодня в 16:00 по МСК, я предлагаю вновь встретиться в Яндекс.Телемост!
Сегодня я хочу рассказать Вам о классах Pageable, Specification и немного о Criteria API.
Узнаем, для чего нам пагинация, фильтрация и как это работает под капотом.
Жду всех!👍
Сегодня в 16:00 по МСК, я предлагаю вновь встретиться в Яндекс.Телемост!
Сегодня я хочу рассказать Вам о классах Pageable, Specification и немного о Criteria API.
Узнаем, для чего нам пагинация, фильтрация и как это работает под капотом.
Жду всех!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
А вы придете на встречу?
Anonymous Poll
36%
Да, я конечно буду!
44%
Я хотел бы, но к сожалению не могу 😕
12%
Что за встреча? Где я? 😀
8%
Херней страдаете! Идите учите Java😡
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Пагинация и фильтрация средствами JAVA.
Встреча от 20.04.2025
Запись встречи -
YOUTUBE
RUTUBE
На сегодняшней встрече мы разобрали такую немаловажную и довольно часто встречающуюся тему как пагинация и фильтрация средствами JAVA.
Что мы узнали:
➡️ Что такое пагинация и зачем она нужна.
➡️ Как реализованы интерфейсы Pageable и Specification.
➡️ Рассмотрели способы реализации пагинации и фильтрации.
➡️ Написали небольшой проект, где все это пощупали руками.
Максимально подробно все реализовано в GitHub - https://github.com/Oleborn/ReserchPagebleAndSpecification
Смотрите, комментируйте, задавайте вопросы! Обязательно подписывайтесь на ютуб и рутюб каналы!!!
Всем кто пришел и помогал вопросами, моя большая благодарность! 🤙
Встреча от 20.04.2025
Запись встречи -
YOUTUBE
RUTUBE
На сегодняшней встрече мы разобрали такую немаловажную и довольно часто встречающуюся тему как пагинация и фильтрация средствами JAVA.
Что мы узнали:
Максимально подробно все реализовано в GitHub - https://github.com/Oleborn/ReserchPagebleAndSpecification
Смотрите, комментируйте, задавайте вопросы! Обязательно подписывайтесь на ютуб и рутюб каналы!!!
Всем кто пришел и помогал вопросами, моя большая благодарность! 🤙
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍1 1
"Безопасность — это процесс, а не продукт."
Брюс Шнайер, эксперт по криптографии, сказал это в 2000 году в статье для журнала Information Security.
Почитать короткую биографию
И о его работах
#Citation #Biography
Please open Telegram to view this post
VIEW IN TELEGRAM
Wikipedia
Bruce Schneier
American computer scientist
👍3