Главная страница
Навигация по странице:

  • @Table

  • @GeneratedValue

  • @Column

  • @ManyToMany

  • @JoinColumn @Version @OrderBy

  • 16. Чем HQL отличается от SQL

  • Преимущества H

  • Недостатки H

  • 17. Что такое Query Как передать в объект Query параметры Что такое Query

  • Query

  • Как передать в объект Query параметры


  • create

  • create-drop

  • 19. Требования JPA к Entity-классам Не менее пяти.

  • 20. Жизненный цикл Entity в Hibernate Рассказать. 1)

  • Removed

  • Ревью #1 - JDBC, Hibernate. 1. Что такое Maven Для чего он нужен Как добавлять в проект библиотеки без него


    Скачать 0.65 Mb.
    Название1. Что такое Maven Для чего он нужен Как добавлять в проект библиотеки без него
    АнкорРевью #1 - JDBC, Hibernate
    Дата22.05.2023
    Размер0.65 Mb.
    Формат файлаdocx
    Имя файлаReview21.docx
    ТипДокументы
    #1150212
    страница3 из 3
    1   2   3

    @Entity: аннотация, указывающая, что класс является сущностью базы данных. Аннотация также может быть использована для указания имени таблицы в базе данных, связанной с этой сущностью.

    @Table: аннотация, используемая для указания имени таблицы в базе данных, связанной с сущностью.

    @Id: аннотация, используемая для указания, что поле является первичным ключом в таблице базы данных.

    @GeneratedValue: аннотация, используемая для указания, как должны генерироваться значения для первичного ключа. (Например, @GeneratedValue(strategy = GenerationType.IDENTITY) указывает, что значения первичного ключа должны быть автоматически генерируемыми и уникальными.)

    @Column: аннотация, используемая для указания имени столбца таблицы базы данных, связанной с полем класса.

    @OneToOne: аннотация, используемая для указания отношения "один-к-одному" между двумя классами.

    @OneToMany: аннотация, используемая для указания отношения "один-ко-многим" между двумя классами. (Например, если один объект класса A связан с множеством объектов класса B, то аннотацию можно использовать для указания этого отношения.)

    @ManyToOne: аннотация, используемая для указания отношения "многие-к-одному" между двумя классами. (Например, если множество объектов класса B связано с одним объектом класса A, то аннотацию можно использовать для указания этого отношения.)

    @ManyToMany: аннотация, используемая для указания отношения "многие-ко-многим" между двумя классами.

    @JoinTable: аннотация, используемая для указания имени таблицы, используемой для связи объектов из разных таблиц базы данных.

    @JoinColumn @Version @OrderBy

    (Аннотация @MapsId в Hibernate используется для установки соответствия между первичным ключом (id) сущности-родителя и вложенным объектом. Она указывает, что идентификатор родительской сущности также должен использоваться как идентификатор вложенного объекта. Например, позволяет связать эти две сущности по общему идентификатору и создавать их одновременно)
    16. Чем HQL отличается от SQL?

    HQL (Hibernate Query Language) - это объекто-ориентированный язык запросов, который очень похож на SQL (Structured Query Language - язык структурированных запросов). Главное различие языков HQL и SQL связано с тем, что SQL формирует запросы из наименований таблиц в базе данных и их столбцов, а HQL работает с сущностями (классами) и их полями (аттрибутами класса).

    (HQL - это объектно-ориентированный язык запросов, разработанный для работы с Hibernate. Он очень похож на SQL, но HQL использует имена классов и свойств объектов вместо имен таблиц и столбцов, что делает его более пригодным для работы с объектно-ориентированными приложениями. Он также поддерживает наследование, агрегирование, полиморфизм и другие концепции ООП.

    SQL, в свою очередь, является стандартным языком запросов, используемым для работы с реляционными базами данных. SQL использует таблицы и столбцы для хранения и извлечения данных. SQL предоставляет более широкий спектр операций, чем HQL, и может быть использован для выполнения более сложных запросов.)

    Преимущества HQL:

    HQL позволяет избежать прямой работы с таблицами и столбцами, что уменьшает зависимость кода от структуры базы данных и упрощает разработку приложений. HQL также обеспечивает более высокий уровень абстракции, что делает его более гибким и удобным в использовании.

    Недостатки HQL:

    Поскольку HQL является объектно-ориентированным языком запросов, его производительность может быть несколько ниже, чем у SQL, особенно при выполнении сложных запросов.
    17. Что такое Query? Как передать в объект Query параметры?

    Что такое Query?

    (HQL запрос всегда начинается с получения объекта Query из Session вызовом метода createQuery(), в который передаётся текст запроса.)

    Интерфейс Query представляет собой объект для выполнения запросов к базе данных.

    Объект Query можно создать (в JPA/Hibernate) используя метод:

    Session.createQuery() - для создания запросов на основе JPQL (HQL);

    Session.createNativeQuery() - для создания запросов на основе SQL.

    (JPQL - Java Persistence Query Language)

    Как передать в объект Query параметры?

    Для передачи параметров в объект Query, мы можно использовать именованные или позиционные параметры.

    Именованные параметры обозначаются символом двоеточия (:), за которым следует имя параметра. В запросе используется имя параметра, и его значение устанавливается с помощью метода setParameter() объекта Query. Например:

    Позиционные параметры обозначаются символом вопроса (?). В запросе используется порядковый номер параметра, начиная с 1, и его значение устанавливается с помощью метода setParameter() объекта Query. Например:

    (Кроме того, объект Query поддерживает множество других методов для настройки запросов и получения результатов, таких как setFirstResult(), setMaxResults(), getSingleResult() и т.д.)
    18. Какие можно устанавливать параметры в hbm2ddl, рассказать про каждый из них.

    hbm2ddl (Hibernate Mapping to Database DDL) - это инструмент, который позволяет автоматически создавать и обновлять таблицы базы данных на основе сущностей Hibernate. Он использует информацию о маппинге Hibernate, чтобы сгенерировать соответствующий SQL для создания и обновления таблиц базы данных.

    create: таблицы базы данных будут созданы заново каждый раз при запуске приложения.

    update: таблицы базы данных будут обновлены в соответствии с изменениями в маппинге Hibernate.

    create-drop: таблицы базы данных будут созданы заново при запуске приложения, а затем снова уничтожены при остановке приложения.

    validate: Hibernate проверит, совпадают ли имена и типы колонок и полей в базе и в аннотациях. олько проверяет соответствие схемы базы данных маппингу Hibernate, не создавая или обновляя таблицы в базе данных. Это самый частый режим.)

    none: Hibernate вообще ничего не будет делать. Если где-то база не совпадает с ожиданием, то будут сыпаться ошибки во время выполнения запросов.

    (hibernate.hbm2ddl.auto Автоматически проверяет или экспортирует DDL схемы в базу данных при создании;

    drop - Схема базы данных будет удалена и создана впоследствии;

    Если дать какое-либо другое значение этому свойству (скажем, abc), или оно просто остается пустым. Это показывает следующее поведение:

    -Если схема отсутствет в БД: - Создает схему

    -Если схема присутствует в БД: - обновите схему.)
    19. Требования JPA к Entity-классам? Не менее пяти.

    1) Должен быть отмечен аннотацией @Entity (или описан в XML файле конфигурации JPA);

    2) Должен содержать public или protected конструктор без аргументов (он также может иметь конструкторы с аргументами);

    3) Должен быть классом верхнего уровня (top-level class) не вложенный;

    4) Не может быть enum или интерфейсом;

    5) Не может быть финальным классом (final class);

    6) Не может содержать финальные поля или методы, если они участвуют в маппинге;

    9) Должен содержать первичный ключ, то есть атрибут или группу атрибутов, которые уникально определяют запись этого Enity класса в базе данных.

    7) Если объект Entity класса будет передаваться по значению как отдельный объект, (например через удаленный интерфейс), он так же должен реализовывать Serializable интерфейс;

    8) Поля Entity класса должны быть напрямую доступны только методам самого Entity класса и не должны быть напрямую доступны другим классам, использующим этот Entity (private, protected или package-private).

    (Другие классы должны обращаться только к методам getter/setter).
    20. Жизненный цикл Entity в Hibernate? Рассказать.

    1) Transient (новый) - Объект создан, но ещё не связан с базой данных (ни с одной сессией Hibernate) и не имеет первичного ключа.

    Объект-сущность находится в этом состоянии, когда он создается оператором new().

    Поле Id у них не должно быть заполнено, иначе объект имеет состояние detached;

    2) Persistent (управляемый) - Объект сохранен в базу данных и имеет первичный ключ.

    Объект в данном состоянии (хранимая сущность) присоединен к конкретной сессии и взаимодействует с БД. При работе с объектом данного типа в рамках транзакции все изменения объекта записываются в базу (при вызове метода commit() транзакции или при выполнении автоматической синхронизации состояний в Hibernate.);

    3) Detached (отдельный) - объект в данном состоянии отсоединён от сессии и может существовать или не существовать в БД.

    (Объект-сущность всё ещё содержит данные из базы данных.)

    (Объект-сущность все ещё отслеживается фреймворком Hibernate и может быть снова связан с сессией при необходимости.);

    4) Removed: Состояние, когда сущность ожидает удаления из базы данных.
    Как с помощью ResultSet получить данные из 2 строки 2 колонки таблицы?
    1   2   3


    написать администратору сайта