Учебники

JPA — ORM Компоненты

Большинство современных приложений используют реляционную базу данных для хранения данных. В последнее время многие поставщики перешли на объектную базу данных, чтобы снизить нагрузку на обслуживание данных. Это означает, что объектная база данных или объектно-реляционные технологии заботятся о хранении, поиске, обновлении и обслуживании. Основной частью этого объекта реляционных технологий является отображение файла 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 ()’.