Хибернация: Отново за презимуват или да започнете
Хибернация - технология, която позволява да се работи с юридически лица, в база данни, като че ли са местните обекти по различен начин - 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 смес се получава.
А, забравих да кажа, че параметрите в запитването са заместени с извикване на функция
Свързани статии