Большинств современные применения используют реляционную базу данных к накапливали данные. Недавно, много поставщиков переключили к базе данных предмета для уменьшения их тяготы на обслуживании данных. Оно значит что база данных предмет или технологии предмета реляционные позаботится о хранить, восстановлять, уточнение, и поддерживая данные. Часть сердечника этой технологии предмета реляционной составляет карту архивы orm.xml. По мере того как xml не требует составления, мы можем легко сделать изменения к множественным источникам данных с меньше администрации.
Составлять карту предмета реляционный (ORM) кратко говорит вас о что ORM и как оно работает. ORM программируя способность к лесная чаща данным от типа объекта к реляционному типу и наоборот.
Главным образом характеристика ORM составляющ карту или связывающ предмет к своим данным в базе данных. Пока составляющ карту, мы должны рассматривать данные, тип данных, и свои отношения с собственн-реальностью или реальностями в любой другой таблице.
Идиоматичное персистирование: Оно позволяет вы написать типы используя предмет - ориентированные типы персистирования.
Высокая эффективность: Она имеет много fetching методов и одарённый ребёнок фиксируя методы.
Надежно: Она сильно стабилизирована и используема много профессиональных программистов.
Взгляды зодчества ORM следующим образом.
Вышеуказанное зодчество объясняет как данные по предмета хранятся в реляционную базу данных в 3 участках.
Первая фаза, названная как участок данным по предмета, содержит типы POJO, интерфейсы обслуживания, и типы. Слой главным образом дела компонентный, который имеет деятельности и атрибуты логики дела.
Например препятствуйте нам принять базу данных работника как схима.
Тип работника POJO содержит атрибуты как удостоверение личности, имя, зарплата, и обозначение. Он также содержит методы как сеттер и геттер тех атрибуты.
Типы работника DAO/Service содержат методы обслуживания как создают работника, находят работник, и уничтожают работника.
Второй участок, названный как участок отображения или персистирования, содержит провайдер JPA, архив отображения (ORM.xml), затяжелитель JPA, и решетку предмета.
Провайдер JPA: Это продукт поставщика который содержит флейвор JPA (javax.persistence). Например Eclipselink, Toplink, Hibernate, etc.
Архив отображения: Архив отображения (ORM.xml) содержит конфигурацию отображения между данными в типе POJO и данными в реляционной базе данных.
Затяжелитель JPA: Затяжелитель JPA работает как сверхоперативная память. Он может нагрузить реляционные данные по решетки. Он работает как экземпляр базы данных для того чтобы взаимодействовать с типами обслуживания для данных по POJO (атрибутов типа POJO).
Решетка предмета: Временное положение которое может хранить экземпляр реляционных данных, как сверхоперативная память. Все вопросы против базы данных сперва произведены эффект на данных в решетке предмета. Only after она поручена, она влияет на главную базу данных.
Третий участок реляционный участок данных. Он содержит реляционные данные которые логически соединены к компоненту дела. Как обсужено выше, только когда компонент дела поручает данные, он хранится в базу данных физически. До после этого, доработанные данные не сохранятся в сверхоперативной памяти как формат решетки. Процесс получать данные идентичен к процессиз хранить данные.
Механизм programmatic взаимодействия над 3 участков вызван как отображение предмета реляционное.
Архив 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 временное хранение и многоразовый компонент или предмет. Serializable тип который имеет конструктора значения по умолчанию и методы геттер и сеттер для того чтобы выступить пример с иничиативой приписывают индивидуально.
Фасоль содержит своего конструктора значения по умолчанию или архива который содержит издаваемый сериями пример. Поэтому, фасоль может instantiate другая фасоль.
Свойства фасоли можно сегрегировать в булевские свойства или non-Булевские свойства.
Non-Булевское свойство содержит методы геттера и сеттера.
Булевское свойство содержит сеттера и метод.
Метод геттера любого свойства должен начать с малое lettered получает (конвенция метода Ява) и продолжено с названием поля которое начинает с прописной буквой. Например, название поля зарплата поэтому метод геттера этого поля getSalary ().
Метод сеттера любого свойства должен начать при малый lettered комплект (конвенция метода Ява), продолжаемый с названием поля которое начинает с прописной буквой и значением аргумента установить для того чтобы field. Например, название поля зарплата поэтому сеттер метод этого поля setSalary (двойной sal).
Для Булевой собственности, метод, чтобы проверить, верно ли это или ложно. Например, Булева пустая собственность, является методом этой области, isEmpty ().