Studopediya

КАТЕГОРИЯ:


Астрономия- (809) Биология- (7483) Биотехнологии- (1457) Военное дело- (14632) Высокие технологии- (1363) География- (913) Геология- (1438) Государство- (451) Демография- (1065) Дом- (47672) Журналистика и СМИ- (912) Изобретательство- (14524) Иностранные языки- (4268) Информатика- (17799) Искусство- (1338) История- (13644) Компьютеры- (11121) Косметика- (55) Кулинария- (373) Культура- (8427) Лингвистика- (374) Литература- (1642) Маркетинг- (23702) Математика- (16968) Машиностроение- (1700) Медицина- (12668) Менеджмент- (24684) Механика- (15423) Науковедение- (506) Образование- (11852) Охрана труда- (3308) Педагогика- (5571) Полиграфия- (1312) Политика- (7869) Право- (5454) Приборостроение- (1369) Программирование- (2801) Производство- (97182) Промышленность- (8706) Психология- (18388) Религия- (3217) Связь- (10668) Сельское хозяйство- (299) Социология- (6455) Спорт- (42831) Строительство- (4793) Торговля- (5050) Транспорт- (2929) Туризм- (1568) Физика- (3942) Философия- (17015) Финансы- (26596) Химия- (22929) Экология- (12095) Экономика- (9961) Электроника- (8441) Электротехника- (4623) Энергетика- (12629) Юриспруденция- (1492) Ядерная техника- (1748) Arhitektura- (3434) Astronomiya- (809) Biologiya- (7483) Biotehnologii- (1457) Военни бизнесмен (14632) Висока technologies- (1363) Geografiya- (913) Geologiya- (1438) на държавата (451) Demografiya- ( 1065) Къща- (47672) журналистика и смирен (912) Izobretatelstvo- (14524) външен >(4268) Informatika- (17799) Iskusstvo- (1338) историята е (13644) Компютри- (11,121) Kosmetika- (55) Kulinariya- (373) културата е (8427) Lingvistika- (374) Literatura- (1642) маркетинг-(23702) математиците на (16968) Механична инженерно (1700) медицина-(12668) Management- (24684) Mehanika- (15423) Naukovedenie- (506) образователна (11852) truda- сигурност (3308) Pedagogika- (5571) Poligrafiya- (1312) Politika- (7869) Лево- (5454) Priborostroenie- (1369) Programmirovanie- (2801) производствено (97 182 ) индустрия- (8706) Psihologiya- (18388) Religiya- (3217) Svyaz (10668) Agriculture- (299) Sotsiologiya- (6455) на (42831) спортист строително (4793) Torgovlya- (5050) транспорт ( 2929) Turizm- (1568) физик (3942) Filosofiya- (17015) Finansy- (26596) химия (22929) Ekologiya- (12095) Ekonomika- (9961) Electronics- (8441) Elektrotehnika- (4623) Мощност инженерно ( 12629) Yurisprudentsiya- (1492) ядрена technics- (1748)

Архитектура на хибернация

Лекция 9 Essentials ORM по примера на хибернация

обект на базата данни

база данни на обекта, широко разпространени в средата на 1990-те години, и не е отишла отвъд ограниченото прилагане в някои области. И все пак е по-скоро екзотика в повечето индустриални среди. база данни на обекта, като се използва мета-информация за езика на целевата програмиране (като C ++ или Java) позволи по прозрачен начин, за да работи с графиката обекти, независимо дали са част от графиката обект в паметта или да не бъде. Освен това, за разлика от сериализация, този подход осигурява развит команден език, езикът позволява манипулация и търсене на обекти, не само в паметта и на външни носители, които разбира се открива възможност за съхраняване на огромни обекти графики без страх изпускателната линия на ОП.

Друга интересна функция, която осигурява база данни обект, е да подкрепи концепцията за спестяване за наличност (постоянство от достъпност), един вид аналог на (колектор боклук) на колектор боклук, но тя работи за целия обект графиката, включително онези части от него, които се съхраняват на външен носител. По този начин, обект се съхранява в базата данни, ако е възможно за достъп до връзките от други обекти. Ако препратка към всеки обект, загубен (поставен в нула), обектът излиза от обхвата (станат недостъпни), и автоматично се изтрива от базата данни. В Java технология, най-близкия обект по смисъла на базата данни е стандартната JDO (Java Data Object), която отговаря на много стандарти в базата данни за обекта определя ODMG (обект Group Management Data).

Hibernate е отворен код за изпълнението на ORM отворен код. От гледна точка на разработчика на хибернация се появява под формата на набор от интерфейси, които предоставят основни услуги за:

  • конфигурация;
  • Консервация и реставрация на обекти във външната база данни;
  • Търсене на обекти, използващи обект език за заявки HQL един (Hibernate Query >
  • механизъм за подпомагане на транзакциите;

Освен това, Hibernate файл определя XML формат за показване на класа за работа (обект модел) на таблицата (или повече таблици) vrelyatsionnoy модел.

В този случай, разработчикът не се изисква да се промени структурата на класа, представляващ модел на домейн. Това е предимство, тъй като класовете отразява предметната област (домейн модел класове) може да се използва без хибернация, защото, най-общо казано, не може да съдържа всяко позоваване на рамковите класовете на хибернация. С други думи, класовете на домейни могат да yavlyatsya конвенционален класове JavaBeans стил (т.е., като съвкупност от полета и да получите / комплект методи за достъп до тях). В допълнение, класове може (и обикновено в добро класове модел, трябва да) имат бизнес методи, които извършват операции, специфични за предметната област, като например клас Book modet бъдат определени метод заем (), който автоматично създава необходимите предмети, отразяващи книгата на факт заем. Всичко това може да бъде направено без никакво участие на класовете от инфраструктурата на хибернация. В края на сделката, Hibernate просто запазване на обектите, които са били променени или добавени.



Помислете за пример. Да предположим, че имаме класа на потребителя, която съдържа полето:

  • ID
  • FIRSTNAME
  • LASTNAME
  • възраст

Нека класът има съответен получи / зададе методи за тези области.

Тогава се създаде и да получите списък на потребителите ще бъде както следва:

пакет книжарница;

внос org.hibernate.cfg.Configuration;

внос org.hibernate.SessionFactory;

внос org.hibernate.Session;

внос org.hibernate.Transaction;

внос bookstore.domain.User;

внос java.util.Iterator;

обществени клас Main {

публично статично невалидни основни (String [] аргументи) хвърля Exception {

SessionFactory sessionFactory = нова конфигурация ()

.configure ( "hibernate.cfg.xml")

.configure ()

.buildSessionFactory ();

Сесия сесия = нула;

Транзакция TX = нула;

опитайте {

сесия = sessionFactory.openSession ();

TX = session.beginTransaction ();

Потребител = нов потребител ();

user.setFirstName ( "First 1");

user.setLastName ( "Last едно");

user.setAge (20);

session.saveOrUpdate (потребител);

за (това итератор = session.createQuery ( "от Потребител") обхождане ();. it.hasNext ();) {

System.out.println (it.next ());

}

tx.commit ();

} Накрая {

ако (сесия! = нула) {

session.flush ();

session.close ();

}

}

}

}

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

поставете в BS_USER (FIRST_NAME, LAST_NAME, AGE, ID) стойности (?,?,?, нула)

наричаме идентичност ()

Моля, имайте предвид, че последната заявка на хибернация получава от потребителя на базата данни автоматично генерирано ID (първичен ключ), като по този начин освобождава програмиста да се налага да се притеснявате за генерирането на първични ключове. Освен това, при преминаването към друга база, като Oracle, може да се използва механизъм ПОСЛЕДОВАТЕЛНОСТ вместо идентичност, докато прозрачен за програмиста разбра, че преход.

За да хибернация знаете за това как един конкретен случай на клас (обект) трябва да бъде записан в базата данни, е необходимо да се осигури т.нар файл за преобразуване:

<? Xml версия = "1.0"?>

<! DOCTYPE хибернация-картографиране PUBLIC

"- // Hibernate / Hibernate Mapping DTD 3.0 // EN"

"Http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<Hibernate-картографиране пакет = "bookstore.domain">

<Име на клас = "Потребителят" маса = "BS_USER">

<Id име = "ID" колона = "ID">

<Generator клас = "родния" />

</ Id>

<Име на имота = "FIRSTNAME" колона = "FIRST_NAME" />

<Име на имота = "Фамилия" колона = "LAST_NAME" />

<Име на имота = "възраст" колона = "AGE" />

</ Class>

</ Hibernate-картографиране>

Този файл определя съответствието между полетата на класа и колони на таблицата. Както можете да видите, огромно дял на хибернация получава информация се използва механизмът за размисъл, освобождавайки програмист да се налага да поиска от очевидното. Например, хибернация автоматично разпознава типа на полето и за съответния вид на колоните в таблицата. Например, едно поле клас "FIRSTNAME" тип java.> (В този случай, в случай на Oracle автоматично ще го превърне в един вид VARCHAR2). Най-общо казано, задължително в този файл е само името на класа, всички останали (включително името на таблицата) Hibernate може да генерира автоматично. Има различни механизми, които ви позволяват да се определят политиките генерират имена на таблици и полета, например tabiltsa трябва да има специфичен префикс да се нарече само с големи букви, и на полето вместо стил FIRSTNAME трябва preobrazovavytsya да FIRST_NAME. Всичко това може да бъде конфигуриран с използването на предоставените средства.

За да се изпълни хибернация, че е необходимо да се определят конфигурацията. Това може да стане с помощта на hibernate.cfg.xml файл и да го поставите в главната директория, където Set CLASSPATH. Когато се обаждате нова конфигурация (). Configure () Hibernate се опитва да намери файл с името, посочено в CLASSPATH и ако nadodit го и конфигурация сграда чете. Един пример конфигурационния файл е показано по-долу.

<! DOCTYPE хибернация-конфигурация PUBLIC

"- // Hibernate / Hibernate Configuration DTD 3.0 // EN"

"Http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<Hibernate-конфигурация>

<Session-фабрика>

<Име на имота = "show_sql"> вярно </ имот>

<Property име = "диалект"> org.hibernate.dialect.HSQLDialect </ имот>

<Име на имота = "cache.provider_class">

org.hibernate.cache.HashtableCacheProvider

</ Имоти>

<Име на имота = "connection.driver_class">

org.hsqldb.jdbcDriver

</ Имоти>

<Име на имота = "connection.username"> SA </ имот>

<Име на имота = "connection.password"> </ имот>

<Име на имота = "connection.url">

JDBC: hsqldb: HSQL: // Localhost

</ Имоти>

<Mapping ресурс = "книжарница / домейн / User.hbm.xml" />

</ Session-фабрика>

</ Hibernate-конфигурация>

Примерът показва най-простата конфигурация за база данни Hypersoniq SQL (HSQLDB). Необходимите параметри са настройки за връзка към базата данни (на водача, потребителско име, парола, както и низ връзка (връзка низ)) и така наречения "диалект" целевата база данни. Диалектът точно е нивото на абстракция, на която искането за преобразуване се дължи на независимост платформа - в асоциирани предприятия и обратно.

<Да се ​​продължи>

<== Предишна лекция | На следващата лекция ==>
| Архитектура на хибернация

; Дата: 05.01.2014; ; Прегледи: 207; Нарушаването на авторските права? ;


Ние ценим Вашето мнение! Беше ли полезна публикуван материал? Да | не



ТЪРСЕНЕ:


Вижте също:



zdes-stroika.ru - Studopediya (2013 - 2017) на година. Тя не е автор на материали, и дава на студентите с безплатно образование и използва! Най-новото допълнение , Al IP: 66.102.9.26
Page генерирана за: 0.054 сек.