ПредишенСледващото

Хибернация: Отново за презимуват или да започнете

Хибернация - технология, която позволява да се работи с юридически лица, в база данни, като че ли са местните обекти по различен начин - ORM (Object-релационни съответствия), свързване на обекти на базата данни, създаване на "виртуален обект на база данни".

Така например, в хибернация ред код

Запишете работната книга в базата данни. Удобна? достатъчно удобно, за да прекарат известно време, за да научите технологията.

Така че, при разреза е друго изявление от серия «Hibernate: Първи стъпки» и напълно работещ пример.

готов

Хибернация самата може да бъде изтеглена от официалния сайт, но не всички необходими библиотеки за работа с него е доставен. И все пак, аз препоръчвам да го изтеглите, защото има документация, и от времето, може и да излезе нова версия.

Да започнем с кратка беседа за това как тя работи. В програмата, ние създаваме класове за тяхното свързване към същността на нашата база данни. В английската литература, такива класове се наричат ​​POJO - обикновена стара Java odjects. Той съдържа набор от частни полета, за всеки от тях има кариерист и сетер, конструктор по подразбиране (без параметри), както и всякакви други дизайнери по желание. Това обикновено е достатъчно за тези класове.

Свързването на Java класове, таблици в базата данни се извършва с помощта на специален файл за преобразуване, който определя колко полета на класа, които отговарят на колони в базата данни.

Първият път, за да спят зимен сън, той чете всички настройки от файл hibernate.cfg.xml. който съхранява низ свързване към база данни, име / парола, укажете пътя до файловете за картографиране.

Допълнителни функции се изпълняват, бизнес логика съответното приложение, но изпълнението им оставя много по-малко време в сравнение с традиционния JDBC - в крайна сметка се свежда до взаимодействие програмист работи с "местни" сайтове и периодична опазване.

Е, нека да започнем

Тъй като базата данни да използвам MySQL.

Сега нека създадем класове на Java - едно и също лице, със същите ограничения, както в нашата база данни. Тя ще бъде класове Book, автор, Reader и използване. Те ще имат скрито поле, всеки от обектите е такава, както сме ги създали в нашата база данни, набор от създателите и привличат и сценографи (един възможен конструктор по подразбиране се без аргументи).

Частично давам тези класове:

Ние свързваме с базовите класове

Сега е време да кажа на хибернация, че тези класове са субект картографиране от базата данни. За тази цел на картографските-файлове, които са на XML файл с набор от инструкции.

Инструкциите, които се съдържат в таговете , който съдържа

показва ключова поле трябва да се използва за комуникация;

Това показва многообразието на отношенията между това лице и от друга страна, в този пример - много-към-много.

Всеки един от тези етикети има свой собствен набор от параметри, които се считат за най-доброто от един пример:

Всяка област има етикет

Определя как колона в таблица, база данни, за да се сдружават на имота;

Тук е цялата преписка, в който са описани тези отношения:

И все пак е налице разгласяване едно към едно, но поради факта, че тя се използва едва ли някога, ще го пуснете за разглеждане.

Просто обърнете внимание на факта, че изпълнението на много-към-много с опция показва AUTHORSBOOKS на постановка на маса. а не автори.

Но не е задължително да пиша всичко това ръката - всичко вече е направено за нас. Ако сте инсталирали приставката за Eclipse, можете да създадете тези файлове код генератор, като кликнете върху опаковката с желания обект на десния бутон на мишката, изберете нов -> друго ... и списъкът на хибернация от «хибернация файл за преобразуване». Ние отбележете необходимите класове да генерира и да видите резултата.

На второ място, ние използваме ключовата областта за автоматично увеличение, и не го посочи себе си, така че този параметър променя през цялото възлага на родения.

На трето място, той не създава много-към-много, така че в резултат на правото стик.

приспособима

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

Тук е резултат конфигурационния файл Мисля, че е очевидно, всички. Първо там са настройките на връзката, а след това укажете пътя до файла с картите. Вариант с кодирането трябва да се уточни, ако проектът използва кирилицата, в противен случай всички герои достигат до българския MySQL като един куп въпросителни знаци.

Ако зададете свойства show_sql стойност за вярно, то ще даде на всички заявки, получени от тях, за да стандартния изход. За да се наблюдава как работи, са по-добре наляво, за да е истина.

Този файл трябва да бъдат поставени в основната директория на всички изходни файлове в случай на проекта в Eclipse - папка SRC / на. Да го кажем, ние сме призовани hibernate.cfg.xml.

Сега ние се създаде специална сесия мениджър за работа с hiberneyt. Създаване на отделен пакет за него в него клас и записване:

Когато се обадите метод getSessionFactory () ще се инициализира hiberneyta, той чете всички настройки ще се свързват предмети с таблици в базата данни.

програмируем

Така че, това, което се дефинира методи можем да бъдем полезни за работа с записите в базата данни. Например:

  • добавяне;
  • изтриване;
  • се промени;
  • получите целия списък;
  • получаване на идентификационен елемент;

Да се ​​създаде интерфейс, който описва тези функции. Създаване на общ интерфейс:

Ние реализираме този интерфейс.

Напълно даден тук, че няма да се интересуват да изтеглите изходния код на приложението и се рови в нея. Аз ще ви кажа само, че следните методи клас сесия се използва, за да си взаимодействат с базата данни:

session.save (El); - запазите елемента в базата данни;
session.update (El); - актуализиране на елемента;
session.delete (El); - изтриване;
session.saveOrUpdate (El); - да поддържа или да актуализират;
ел = (Е) session.get (elementClass, elId); - получите елемент на ИД;
ELS = session.createCriteria (elementClass) .list (); - списък на всички елементи.

При изпълнението на този интерфейс, аз използвах някои трик - обърнете внимание на дизайнера. Получаването клас (тип обект клас, използвайки E.class тип низ) на в Java не е възможно, но взаимодействието с базата данни в Хиберния е именно с помощта на класове - в критериите, посочете кои клас трябва да се получи. Ето защо, дизайнерът е бил създаден, като тип Class обект като параметър. Имайте предвид, че ElementDAOImpl клас не е предназначен за пряка консумация, но трябва да се наследява и определя изрично типа елемент. Например:

Така че аз осъзнах, както и всички други класове.

Сега се създаде клас сам, което позволява директна манипулация на данни:

Сега можете да работите с базата данни:

Въпреки това, този набор от функции - не това, което бихме искали. Напротив, то е, но само малко. Следователно, функцията да бъдат реализирани съвпадение бизнес логиката на приложението си. Например:

  • добавите няколко книги от текстов файл;
  • даде книгата;
  • вземете една книга;
  • намерите всички книги, които някога бяха на читателя;
  • Намери всички просрочени книги;

В зимен сън има три начина на формиране на вземане на проби от базата данни.

  • Използването HQL заявка език;
  • Използвайте Критерии API;
  • Като се използват конвенционални SQL.

Ние считаме, че всяка една от опциите.

HQL много подобна на обичайната SQL, като основната разлика е, че искането е оформено като обект. По-добре е да дам няколко примера:

Друг интересен пример, при който се създава в резултат на предмета на заявката:

Разбира се, обектът трябва да бъде дизайнер, или хибернация се закле, казвайки, че подходящ конструктор намерен. Такова SQL и Java смес се получава.

А, забравих да кажа, че параметрите в запитването са заместени с извикване на функция

Свързани статии

Подкрепете проекта - споделете линка, благодаря!