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


Advertisements

Большинств современные применения используют реляционную базу данных к накапливали данные. Недавно, много поставщиков переключили к базе данных предмета для уменьшения их тяготы на обслуживании данных. Оно значит что база данных предмет или технологии предмета реляционные позаботится о хранить, восстановлять, уточнение, и поддерживая данные. Часть сердечника этой технологии предмета реляционной составляет карту архивы orm.xml. По мере того как xml не требует составления, мы можем легко сделать изменения к множественным источникам данных с меньше администрации.

Отображение предмета реляционное

Составлять карту предмета реляционный (ORM) кратко говорит вас о что ORM и как оно работает. ORM программируя способность к лесная чаща данным от типа объекта к реляционному типу и наоборот.

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

Продвинутые особенности

  • Идиоматичное персистирование: Оно позволяет вы написать типы используя предмет - ориентированные типы персистирования.

  • Высокая эффективность: Она имеет много fetching методов и одарённый ребёнок фиксируя методы.

  • Надежно: Она сильно стабилизирована и используема много профессиональных программистов.

Зодчество ORM

Взгляды зодчества ORM следующим образом.

Отображение предмета реляционное

Вышеуказанное зодчество объясняет как данные по предмета хранятся в реляционную базу данных в 3 участках.

Phase1

Первая фаза, названная как участок данным по предмета, содержит типы POJO, интерфейсы обслуживания, и типы. Слой главным образом дела компонентный, который имеет деятельности и атрибуты логики дела.

Например препятствуйте нам принять базу данных работника как схима.

  • Тип работника POJO содержит атрибуты как удостоверение личности, имя, зарплата, и обозначение. Он также содержит методы как сеттер и геттер тех атрибуты.

  • Типы работника DAO/Service содержат методы обслуживания как создают работника, находят работник, и уничтожают работника.

Участок 2

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

  • Провайдер JPA: Это продукт поставщика который содержит флейвор JPA (javax.persistence). Например Eclipselink, Toplink, Hibernate, etc.

  • Архив отображения: Архив отображения (ORM.xml) содержит конфигурацию отображения между данными в типе POJO и данными в реляционной базе данных.

  • Затяжелитель JPA: Затяжелитель JPA работает как сверхоперативная память. Он может нагрузить реляционные данные по решетки. Он работает как экземпляр базы данных для того чтобы взаимодействовать с типами обслуживания для данных по POJO (атрибутов типа POJO).

  • Решетка предмета: Временное положение которое может хранить экземпляр реляционных данных, как сверхоперативная память. Все вопросы против базы данных сперва произведены эффект на данных в решетке предмета. Only after она поручена, она влияет на главную базу данных.

Участок 3

Третий участок реляционный участок данных. Он содержит реляционные данные которые логически соединены к компоненту дела. Как обсужено выше, только когда компонент дела поручает данные, он хранится в базу данных физически. До после этого, доработанные данные не сохранятся в сверхоперативной памяти как формат решетки. Процесс получать данные идентичен к процессиз хранить данные.

Механизм programmatic взаимодействия над 3 участков вызван как отображение предмета реляционное.

Mapping.xml

Архив mapping.xml проинструктировать поставщик JPA составить карту типы реальности с таблицами базы данных.

Препятствуйте нам принять пример реальности работника которая содержит 4 атрибута. Тип POJO работника 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 работника. Он содержит eid, ename, зарплату, и deg 4 атрибутов. Рассматривайте эти атрибуты как поля таблицы в таблице и 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>: бирка определяет имя таблицы. Если вы хотите иметь идентичные имена и для типа так же, как таблица, то эта бирка не необходима.

  • <attributes>: бирка определяет атрибуты (поля в таблице).

  • <id>: бирка определяет основной ключ таблицы. Бирка <generated-value> определяет как задать основное ключевое значение как автоматическое, ручное, или принято от последовательности.

  • <basic>: бирка использована для определять оставая атрибуты для таблицы.

  • <column-name>: бирка использована для того чтобы определить определяемые пользователем названия поля таблицы в таблице.

Приписки

Вообще архивы xml использованы для того чтобы установить специфические компоненты, или спецификации отображения 2 различные компонентов. В наш случай, мы должны поддерживать архивы xml отдельно в рамках. Тому значит while писание архива xml отображения, мы нужно сравнить атрибуты типа POJO с бирками реальности в архиве mapping.xml.

Здесь разрешение. В определении типа, мы можем написать часть конфигурации используя приписки. Приписки использованы для типов, свойств, и методов. Приписки начинают с символом ` @'. Приписки объявлены до типа, свойства, или метода. Все приписки JPA определены в пакете javax.persistence.

Здесь список приписок используемых в наших примерах дается ниже.

Приписка Описание
@Entity Объявляет тип как реальность или таблица.
@Table Объявляет имя таблицы.
@Basic Определяет поля non-ограничения недвусмысленно.
@Embedded Определяет свойства типа или реальности значение которой пример embeddable типа.
@Id Определяет свойство, пользу для тождественности (основного ключа таблицы) типа.
@GeneratedValue Определяет как атрибут тождественности можно выступить с иничиативой как автоматическое, ручно, или значение принятое от таблицы последовательности.
@Transient Определяет свойство которое не упорне, т.е., значение никогда не хранится в базе данных.
@Column Определяет атрибут колонки для свойства персистирования.
@SequenceGenerator Определяет значение для свойства которое определено в приписке @GeneratedValue. Оно создает последовательность.
@TableGenerator Определяет генератор значения для свойства определенного в приписке @GeneratedValue. Она создает таблицу для поколения значения.
@AccessType Этот тип приписки использован для того чтобы установить тип доступа. Если вы установили @AccessType (ПОЛЕ), то доступ происходит поле велемудрое. Если вы установили @AccessType (СВОЙСТВО), то доступ происходит свойство велемудрое.
@JoinColumn Определяет ассоциацию реальности или собрание реальности. Это использовано в много к-одн и одн-к-много ассоциаций.
@UniqueConstraint Определяет поля и уникально ограничения для первичной или вторичной таблицы.
@ColumnResult Снабжает ссылками имя колонки в вопросе SQL используя отборную клаузулу.
@ManyToMany Определяет много-к-много отношение между таблицами соединять.
@ManyToOne Определяет a много-к-одн отношению между таблицами соединять.
@OneToMany Определяет одн-к-много отношение между таблицами соединять.
@OneToOne Определяет взаимнооднозначное отношение между таблицами соединять.
@NamedQueries определяет список названных вопросов.
@NamedQuery Определяет вопрос используя статическое имя.

Стандарт фасоли Java

Тип Java помещает значения примера и их поведения в одиночный вызванный блок возражают. Фасоль Java временное хранение и многоразовый компонент или предмет. Serializable тип который имеет конструктора значения по умолчанию и методы геттер и сеттер для того чтобы выступить пример с иничиативой приписывают индивидуально.

Конвенции фасоли

  • Фасоль содержит своего конструктора значения по умолчанию или архива который содержит издаваемый сериями пример. Поэтому, фасоль может instantiate другая фасоль.

  • Свойства фасоли можно сегрегировать в булевские свойства или non-Булевские свойства.

  • Non-Булевское свойство содержит методы геттера и сеттера.

  • Булевское свойство содержит сеттера и метод.

  • Метод геттера любого свойства должен начать с малое lettered получает (конвенция метода Ява) и продолжено с названием поля которое начинает с прописной буквой. Например, название поля зарплата поэтому метод геттера этого поля getSalary ().

  • Метод сеттера любого свойства должен начать при малый lettered комплект (конвенция метода Ява), продолжаемый с названием поля которое начинает с прописной буквой и значением аргумента установить для того чтобы field. Например, название поля зарплата поэтому сеттер метод этого поля setSalary (двойной sal).

  • Для Булевой собственности, метод, чтобы проверить, верно ли это или ложно. Например, Булева пустая собственность, является методом этой области, isEmpty ().

Advertisements