Файл: 1. Что такое Maven Для чего он нужен Как добавлять в проект библиотеки без него.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 09.11.2023
Просмотров: 267
Скачиваний: 4
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Обособленное состояние
-
Когда мы либо закрываем сеанс, либо очищаем его кеш, объект переходит в отключенное состояние. -
Поскольку объект больше не связан с сеансом, изменения в данных не влияют ни на какие изменения в базе данных. -
Однако отсоединенный объект по-прежнему представлен в базе данных. -
Если мы хотим сохранить изменения, внесенные в отсоединенный объект, необходимо повторно подключить приложение к допустимому сеансу Hibernate. -
Чтобы связать отсоединенный объект с новым сеансом гибернации, используйте любой из этих методов - load (), merge (), refresh (), update () или save () в новом сеансе со ссылкой на отсоединенный объект.
Мы можем использовать любой из следующих методов для отсоединенного состояния.
-
session.close (); -
session.clear (); -
session.detach (e); -
session.evict (e);
Mapping
Mapping (сопоставление, проецирование) Java классов с таблицами базы данных осуществляется с помощью конфигурационных XML файлов или Java-аннотаций. При использовании файла XML, Hibernate может генерировать скелет исходного кода для классов длительного хранения (persistent). В этом нет необходимости, если используется аннотация. Hibernate может использовать файл XML или аннотации для поддержки схемы базы данных.
Персистентность
Коллекции объектов данных, как правило, хранятся в виде коллекций Java-объектов, таких
как набор (Set) и список (List). Поддерживаются обобщенные классы (Generics), введены в Java 5. Hibernate может быть настроен на «ленивые» (отложенные) загрузки коллекций. Отложенные загрузки является вариантом по умолчанию, начиная с Hibernate 3.
Связанные объекты могут быть настроены на каскадные операции. Например, родительский класс, Album (музыкальный альбом), может быть настроен на каскадное сохранения и/или удаление своего отпрыска Track. Это может сократить время разработки и обеспечить целостность. Функция проверки изменения данных (dirty checking) позволяет избежать ненужной записи действий в базу данных, выполняя SQL обновление только при изменении полей персистентных объектов.
21. Для чего нужны Transaction.
Транзакциии нужны для того, чтобы обеспечить целостность операций над БД. Если хотя бы один запрос из цепочки запросов не выполнится, не выполнится ни один и БД "откатится " к исходному состоянию.
22. Как работает @GeneratedValue? Обязательна ли эта аннотация?
Существует 4 варианта генерации первичных ключей
1. GenerationType.AUTO является типом генерации по умолчанию и позволяет поставщику персистентности выбрать стратегию генерации.
Если вы используете Hibernate в качестве поставщика персистентности, он выбирает стратегию генерации на основе конкретного диалекта базы данных. Для большинства популярных баз данных он выбирает GenerationType.SEQUENCE .
2. GenerationType.IDENTITY-самый простой в использовании, но не самый лучший с точки зрения производительности . Он опирается на автоматически увеличивающийся столбец базы данных и позволяет базе данных генерировать новое значение при каждой операции вставки. С точки зрения базы данных это очень эффективно, поскольку столбцы автоматического приращения сильно оптимизированы и не требуют никаких дополнительных операторов.
Этот подход имеет существенный недостаток, если вы используете Hibernate. Hibernate требует значения первичного ключа для каждой управляемой сущности и поэтому должен немедленно выполнить инструкцию insert. Этот предотвращает использование различных методов оптимизации, таких как пакетирование JDBC.
3. GenerationType.SEQUENCE использует последовательность базы данных для генерации уникальных значений. Для получения следующего значения из последовательности базы данных требуются дополнительные операторы select. Но это не имеет никакого значения воздействие для большинства применений .
Если вы не предоставите никакой дополнительной информации, Hibernate запросите следующее значение из последовательности по умолчанию. Вы можете изменить это , обратившись к имени @SequenceGenerator в генераторе атрибут аннотации @GeneratedValue . Аннотация @SequenceGenerator позволяет определить имя генератора, имя и схему последовательности базы данных, а также размер распределения последовательности.
GenerationType.TABLE используется очень редко . Он имитирует последовательность путем хранения и обновления ее текущего значения в таблице базы данных, которая требует использования пессимистических блокировок, которые ставят все операции в последовательном порядке. Это замедляет ваше приложение, и поэтому вы должны предпочесть GenerationType.SEQUENCE, если ваша база данных поддерживает последовательности, что делают большинство популярных баз данных.
Что такое @OneToOne(cascade = CascadeType.ALL)
Выражение, показывающее, что существующая связь между таблицами "один к одному" и операция над одной сущностью затрагивает все связанные с ней сущности.
Существуют следующие операции при которых может применяться Cascade:
1. ALL - любая операция над сущностью
2. PERSIST - операция сохранения
3. MERGE - объединения
4. REMOVE - удаления
5. REFRESH - обновления
6. DETACH - отсоединения