Большинство современных приложений используют реляционную базу данных для хранения данных. В последнее время многие поставщики перешли на объектную базу данных, чтобы снизить нагрузку на обслуживание данных. Это означает, что объектная база данных или объектно-реляционные технологии заботятся о хранении, поиске, обновлении и обслуживании. Основной частью этого объекта реляционных технологий является отображение файла orm.xml. Поскольку xml не требует компиляции, мы можем легко вносить изменения в несколько источников данных с меньшими затратами на администрирование.
Реляционное сопоставление объектов
Объектно-реляционное сопоставление (ORM) кратко рассказывает о том, что такое ORM и как оно работает. ORM — это возможность программирования для преобразования данных из типа объекта в реляционный тип и наоборот.
Основной особенностью ORM является сопоставление или привязка объекта к его данным в базе данных. При отображении мы должны учитывать данные, тип данных и их отношения с собственной сущностью или сущностью в любой другой таблице.
Расширенные возможности
-
Идиоматическое постоянство : оно позволяет вам писать постоянные классы, используя объектно-ориентированные классы.
-
Высокая производительность : у него много методов извлечения и многообещающих методов блокировки.
-
Надежный : это очень стабильный и выдающийся. Используется многими промышленными программистами.
Идиоматическое постоянство : оно позволяет вам писать постоянные классы, используя объектно-ориентированные классы.
Высокая производительность : у него много методов извлечения и многообещающих методов блокировки.
Надежный : это очень стабильный и выдающийся. Используется многими промышленными программистами.
Архитектура ORM
Здесь следуйте архитектуре ORM.
Вышеприведенная архитектура объясняет, как данные объекта хранятся в реляционной базе данных в три этапа.
Фаза 1
Первая фаза, названная как фаза данных объекта, содержит классы POJO, интерфейсы служб и классы. Это слой основного бизнес-компонента, который имеет операции и атрибуты бизнес-логики.
Например, давайте возьмем базу данных сотрудников в качестве схемы
-
Класс POJO сотрудника содержит такие атрибуты, как идентификатор, имя, зарплата и обозначение. И методы, такие как методы установки и получения этих атрибутов.
-
Классы DAO / Service для сотрудников содержат методы обслуживания, такие как создание сотрудников, поиск сотрудников и удаление сотрудников.
Класс POJO сотрудника содержит такие атрибуты, как идентификатор, имя, зарплата и обозначение. И методы, такие как методы установки и получения этих атрибутов.
Классы DAO / Service для сотрудников содержат методы обслуживания, такие как создание сотрудников, поиск сотрудников и удаление сотрудников.
Фаза 2
Вторая фаза, называемая фазой отображения или сохранения, которая содержит провайдера JPA, файл отображения (ORM.xml), загрузчик JPA и объектную сетку.
-
JPA Provider : продукт поставщика, который содержит аромат JPA (javax.persistence). Например, Eclipselink, Toplink, Hibernate и т. Д.
-
Файл отображения: файл отображения (ORM.xml) содержит конфигурацию отображения между данными в классе POJO и данными в реляционной базе данных.
-
JPA Loader : JPA Loader работает как кеш-память, которая может загружать данные реляционной сетки. Он работает как копия базы данных для взаимодействия с классами обслуживания для данных POJO (Атрибуты класса POJO).
-
Сетка объектов : Сетка объектов — это временное расположение, в котором может храниться копия реляционных данных, например, в кэш-памяти. Все запросы к базе данных сначала выполняются на данных в сетке объектов. Только после фиксации это влияет на основную базу данных.
JPA Provider : продукт поставщика, который содержит аромат JPA (javax.persistence). Например, Eclipselink, Toplink, Hibernate и т. Д.
Файл отображения: файл отображения (ORM.xml) содержит конфигурацию отображения между данными в классе POJO и данными в реляционной базе данных.
JPA Loader : JPA Loader работает как кеш-память, которая может загружать данные реляционной сетки. Он работает как копия базы данных для взаимодействия с классами обслуживания для данных POJO (Атрибуты класса POJO).
Сетка объектов : Сетка объектов — это временное расположение, в котором может храниться копия реляционных данных, например, в кэш-памяти. Все запросы к базе данных сначала выполняются на данных в сетке объектов. Только после фиксации это влияет на основную базу данных.
Фаза 3
Третья фаза — это фаза реляционных данных. Он содержит реляционные данные, которые логически связаны с бизнес-компонентом. Как обсуждалось выше, только когда бизнес-компонент фиксирует данные, они физически сохраняются в базе данных. До этого измененные данные хранятся в кэш-памяти в виде формата сетки. Это же процесс получения данных.
Механизм программного взаимодействия указанных трех фаз называется объектным реляционным отображением.
Mapping.xml
Файл mapping.xml должен проинструктировать поставщика JPA для сопоставления классов Entity с таблицами базы данных.
Давайте рассмотрим пример объекта Employee, который содержит четыре атрибута. Класс POJO объекта Employee с именем Employee.java выглядит следующим образом:
public class Employee { private int eid; private String ename; private double salary; private String deg; public Employee(int eid, String ename, double salary, String deg) { super( ); this.eid = eid; this.ename = ename; this.salary = salary; this.deg = deg; } public Employee( ) { super(); } public int getEid( ) { return eid; } public void setEid(int eid) { this.eid = eid; } public String getEname( ) { return ename; } public void setEname(String ename) { this.ename = ename; } public double getSalary( ) { return salary; } public void setSalary(double salary) { this.salary = salary; } public String getDeg( ) { return deg; } public void setDeg(String deg) { this.deg = deg; } }
Приведенный выше код является классом POJO сущности Employee. Он содержит четыре атрибута eid, ename, salary и deg. Считайте, что эти атрибуты являются полями таблицы в базе данных, а eid является первичным ключом этой таблицы. Теперь мы должны спроектировать файл отображения hibernate для него. Файл сопоставления с именем mapping.xml выглядит следующим образом:
<? xml version="1.0" encoding="UTF-8" ?> <entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" version="1.0"> <description> XML Mapping file</description> <entity class="Employee"> <table name="EMPLOYEETABLE"/> <attributes> <id name="eid"> <generated-value strategy="TABLE"/> </id> <basic name="ename"> <column name="EMP_NAME" length="100"/> </basic> <basic name="salary"> </basic> <basic name="deg"> </basic> </attributes> </entity> </entity-mappings>
Приведенный выше скрипт для сопоставления класса сущности с таблицей базы данных. В этом файле
-
<entity-mappings> : тег определяет определение схемы, чтобы разрешить теги объекта в XML-файл.
-
<description> : тег определяет описание приложения.
-
<entity> : тег определяет класс сущности, который вы хотите преобразовать в таблицу в базе данных. Класс атрибута определяет имя класса сущности POJO.
-
<table> : тег определяет имя таблицы. Если вы хотите сохранить имя класса в качестве имени таблицы, тогда этот тег не нужен.
-
<attribute> : тег определяет атрибуты (поля в таблице).
-
<id> : тег определяет первичный ключ таблицы. Тег <Генерируемое значение> определяет, как назначить значение первичного ключа, например, Автоматический, Ручной или взятый из Последовательности.
-
<basic> : тег используется для определения оставшихся атрибутов для таблицы.
-
<имя-столбца> : тег используется для определения пользовательского имени поля таблицы.
<entity-mappings> : тег определяет определение схемы, чтобы разрешить теги объекта в XML-файл.
<description> : тег определяет описание приложения.
<entity> : тег определяет класс сущности, который вы хотите преобразовать в таблицу в базе данных. Класс атрибута определяет имя класса сущности POJO.
<table> : тег определяет имя таблицы. Если вы хотите сохранить имя класса в качестве имени таблицы, тогда этот тег не нужен.
<attribute> : тег определяет атрибуты (поля в таблице).
<id> : тег определяет первичный ключ таблицы. Тег <Генерируемое значение> определяет, как назначить значение первичного ключа, например, Автоматический, Ручной или взятый из Последовательности.
<basic> : тег используется для определения оставшихся атрибутов для таблицы.
<имя-столбца> : тег используется для определения пользовательского имени поля таблицы.
Аннотации
Обычно файлы XML используются для настройки конкретного компонента или отображения двух различных спецификаций компонентов. В нашем случае мы должны поддерживать XML отдельно в рамках. Это означает, что при написании файла сопоставления xml нам нужно сравнить атрибуты класса POJO с тегами сущностей в файле mapping.xml.
Вот решение: в определении класса мы можем написать часть конфигурации, используя аннотации. Аннотации используются для классов, свойств и методов. Аннотации начинаются с символа «@». Аннотации объявляются до объявления класса, свойства или метода. Все аннотации JPA определены в пакете javax.persistence.
Ниже следует список аннотаций, используемых в наших примерах
аннотирование | Описание |
---|---|
@Сущность | Эта аннотация указывает на объявление класса как объекта или таблицы. |
@Таблица | Эта аннотация указывает на объявление имени таблицы. |
@Basic | Эта аннотация явно указывает поля без ограничений. |
@Embedded | Эта аннотация указывает свойства класса или объекта, значение которого является экземпляром встраиваемого класса. |
@Я бы | Эта аннотация указывает свойство, используемое для идентификации (первичный ключ таблицы) класса. |
@GeneratedValue | Эта аннотация указывает, как можно инициализировать атрибут идентичности, например, автоматический, ручной или значение, взятое из таблицы последовательности. |
@Transient | Эта аннотация указывает свойство, которое не является постоянным, то есть значение никогда не сохраняется в базе данных. |
@column | Эта аннотация используется для указания столбца или атрибута для свойства постоянства. |
@SequenceGenerator | Эта аннотация используется для определения значения свойства, указанного в аннотации @GeneratedValue. Это создает последовательность. |
@TableGenerator | Эта аннотация используется для указания генератора значений для свойства, указанного в аннотации @GeneratedValue. Создает таблицу для генерации стоимости. |
@AccessType | Этот тип аннотации используется для установки типа доступа. Если вы установите @AccessType (FIELD), то произойдет доступ по полю. Если вы установите @AccessType (PROPERTY), тогда произойдет оценка по свойствам. |
@JoinColumn | Эта аннотация используется для указания ассоциации объекта или коллекции объектов. Это используется в ассоциациях «многие к одному» и «один ко многим». |
@Уникальное ограничение | Эта аннотация используется для указания поля, уникального ограничения для первичной или вторичной таблицы. |
@ColumnResult | Эта аннотация ссылается на имя столбца в запросе SQL с помощью предложения select. |
@ManyToMany | Эта аннотация используется для определения отношения «многие ко многим» между таблицами объединения. |
@ManyToOne | Эта аннотация используется для определения отношения многие-к-одному между таблицами соединения. |
@Один ко многим | Эта аннотация используется для определения отношения один-ко-многим между таблицами объединения. |
@Один к одному | Эта аннотация используется для определения отношения один-к-одному между таблицами соединения. |
@NamedQueries | Эта аннотация используется для указания списка именованных запросов. |
@NamedQuery | Эта аннотация используется для указания запроса с использованием статического имени. |
Java Bean Standard
Java-класс, инкапсулирует значения экземпляров и поведения в единый объект, называемый объектом. Java Bean — это временное хранилище и компонент многократного использования или объект. Это сериализуемый класс, который имеет конструктор по умолчанию и методы getter и setter для индивидуальной инициализации атрибутов экземпляра.
Бин содержит конструктор по умолчанию или файл, содержащий сериализованный экземпляр. Следовательно, бин может создавать его экземпляр.
Свойства bean-компонента могут быть разделены на логические свойства и не-логические свойства.
Не булево свойство содержит методы получения и установки.
Логическое свойство содержит сеттер и является методом.
Метод получения любого свойства должен начинаться с маленькой буквы «get» (соглашение о методе java) и продолжаться именем поля, начинающимся с заглавной буквы. Например, имя поля ‘salary’, поэтому метод получения этого поля ‘getSalary ()’.
Метод сеттера любого свойства должен начинаться с небольшого буквенного «набора» (соглашение о методе java), продолжающегося именем поля, которое начинается с заглавной буквы, и значением аргумента, которое нужно установить в поле. Например, имя поля ‘salary’, поэтому метод установки этого поля ‘setSalary (double sal)’.
Для логического свойства — это метод для проверки, является ли оно истинным или ложным. Например, логическое свойство ’empty’, метод is этого поля is ‘isEmpty ()’.