Что такое Mapping?

Что такое Mapping?

JPA Mapping — технология, помогающая связывать таблицы в базе данных с объектами в Java-приложениях. Она помогает отображать содержимое базы данных на класс Java для использования их в коде.

С чем работаем

Сущность или же Entity — это класс в Java, который имеет соответствующую ему таблицу в базе данных. Допустим, у нас есть таблица Mages, где записаны все не маглы в принципе: чистокровные, полукровки и даже грязный сквип. Значит, для этой таблицы можно создать класс Mages в Java.

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

Отношения между таблицами — это связи между таблицами в базе данных, которые нужно отразить в Java-объектах. Например, если у нас есть таблицы Dumbledore и Spells, то между ними может быть связь — one-to-many "один ко многим". То есть, один отдельно взятый Дамблдор может знать много колдунств сразу. Эту связь можно отразить на Java-объектах с помощью аннотаций @OneToMany и @ManyToOne.

Аннотация @Column используется для указания соответствия между полями в классе и столбцами в таблице. Аннотация @Id указывает на то, какое поле в классе является идентификатором сущности.

Также для отображения данных в Java-приложениях используются различные типы полей (например, типы даты и времени), которые также можно настроить с помощью аннотаций.

Не будем останавливаться на аннотациях и как ими пользоваться, есть куча инфы на Git. А вот как пользоваться Git, есть в моём ролике, где вы узнаете всё о базе Git за 30 минут.

Что такое Mapping?

One-to-one

Отображение one-to-one в JPA Mapping описывает отношение между двумя сущностями в базе данных, где каждая сущность имеет только одну связанную сущность.

Например, каждый колдун из таблицы Mages может иметь только одну волшебную палочку из таблицы MagicWands. То есть, нет ни одного колдуна (ну или волшебника, как Гарри), кто мог бы владеть сразу несколькими палочками и авада-кедаврить всех в стиле амбидекстера.

В Java-коде, класс Mages будет отображать таблицу Mages, а класс MagicWands будет отображать таблицу MagicWands. Связь между этими двумя классами будет установлена с помощью аннотаций.

Для указания отношения one-to-one между классами Mages и "Профиль", мы можем использовать аннотацию @OneToOne над соответствующими полями в классах. Например, в классе Mages у нас может быть поле MagicWands (тип данных MagicWands), а в классе MagicWands у нас может быть поле mage (тип данных Mages).

Таким образом, отображение one-to-one позволяет нам установить связь между двумя сущностями в БД, где каждая сущность имеет только одну связанную сущность.

Что такое Mapping?

One-to-many

Отображение one-to-many в JPA Mapping описывает отношение между двумя сущностями в БД, где одна сущность имеет возможность иметь несколько связанных сущностей, а другая сущность может быть связана только с одной сущностью.

Например, у нас может быть две таблицы: Houses и Students. У каждого факультета может быть много студентов, но каждый студент может быть связан только с одним факультетом. Только не Слизерин! Кхм, о чём это я.

В Java-коде, класс House будет отображать таблицу Houses, а класс Student будет отображать таблицу Students. Связь между этими двумя классами будет установлена с помощью аннотаций.

Чтобы указать, что у нас есть отношение one-to-many между классами House и Student, мы можем использовать аннотацию @OneToMany над соответствующим полем в классе House (например, поле students типа List). В классе Student будет соответствующее поле (например, поле house типа House).

Таким образом, отображение one-to-many позволяет нам установить связь между двумя сущностями в базе данных, где одна сущность может иметь несколько связанных сущностей.

Что такое Mapping?

Many-to-one

Many-to-one имеет аналогичный подход. Это процесс сопоставления нескольких значений (many) с одним значением (one). Например, если у нас есть несколько Пожирателей смерти, но каждый из них может иметь только одного хозяина — Волан-де-Морта, то мы можем использовать many-to-one отображение для связи Пожирателей с лысым.

Что такое Mapping?

Many-to-many

Mapping many-to-many простыми словами означает связывание нескольких значений (many) с несколькими другими значениями (many), создавая соответствие между ними. Например, давайте представим, что у нас есть база данных со студентами и курсами, и каждый студент может записаться на несколько курсов, а каждый курс может иметь несколько студентов. Гермиона вообще читер, потому что с неликвидным маховиком времени, там уже too many курсов то выходит, ну да ладно.

В этом случае мы можем использовать many-to-many отображение для установления связи между студентами и курсами. Это позволяет нам эффективно организовывать и хранить такие данные при помощи дополнительной таблицы или другой структуры данных, где каждая запись представляет собой комбинацию студента и курса. Так, мы можем легко определить, какие студенты записаны на какие курсы, и какие курсы записаны студентами.

Как используется JPA mapping

Собственно, а зачем всё это надо то? Основная цель JPA Mapping — обеспечение сохранности данных между объектами Java и таблицами базы данных. При помощи JPA Mapping, мы можем определить, какие поля объектов Java должны быть сохранены в базе данных и наоборот, какие значения из базы данных должны быть загружены в соответствующие объекты Java.

Использование JPA Mapping позволяет абстрагироваться от низкоуровневых деталей базы данных, таких как SQL-запросы и транзакции, и работать с данными в объектно-ориентированной парадигме программирования. JPA облегчает взаимодействие с базой данных и упрощает разработку приложений, позволяя разработчикам сосредоточиться на бизнес-логике и манипуляциях с объектами Java

Польза для бизнеса

Как я уже говорил ранее, при помощи маппинга разработчик может работать с данными в Java-объектах, а не в SQL-запросах. Отсюда резонный вопрос: а какую пользу это несёт для бизнеса? То есть, почему это используется, а значит — на кой это вообще существует и изучается людьми. И здесь есть несколько очень веских преимуществ.

Выгода JPA mapping для бизнеса:

  • Улучшение производительности. Использование JPA mapping позволяет избежать лишних запросов к базе данных, что приводит к улучшению производительности приложения.
  • Абстракция от базы данных. JPA mapping позволяет абстрагироваться от конкретной базы данных. Это означает, что команда разработчиков может работать с любым типом баз данных, не изучая специфику каждой.
  • Ускорение процесса разработки. Использование JPA mapping упрощает процесс разработки приложения, так как разработчику не нужно детально знать SQL-запросы.
  • Быстрое внедрение. JPA mapping - это стандартная функция в Java, которая используется в большинстве фреймворков, таких, как Spring/Hibernate. Это означает, что разработчик может быстро внедрить JPA mapping в свой проект.
  • Лучшая управляемость данных. Использование JPA mapping позволяет разработчикам лучше управлять данными, так как они могут описать отношения между таблицами и получать доступ к данным в Java-объектах.

В целом, JPA mapping крайне полезен для бизнеса, так как он позволяет ускорить процесс разработки, улучшить производительность приложения и лучше управлять данными.

Если вам был интересен и полезен этот материал, буду рад вашему мнению в комментариях, а также если вы поделитесь им с друзьями или коллегами. Спасибо!

99
Начать дискуссию