Iată câteva opțiuni pentru configurarea Hibernate. Configurația sau cartografia este de obicei efectuată o singură dată
în timpul funcționării aplicației. O configurație particulară este cuprinsă în clasa de obiecte net.sf.hibernate.cfg.Configuration.
Configurare privată createConfiguration ()
aruncă ClassNotFoundException, MappingException
noua Configurație () .addClass (Class.forName ("courses.hiber.Course"))
Această metodă creează o nouă configurație și adaugă clase cursuri.hiber.Course și courses.hiber.Student (aceasta adăugare este necesară numai dacă fișierele de mapare nu au fost specificate în fișierul de configurare Hibernate). Hibernate caută cartografiere așa cum este descris mai sus. Alte surse de cartografiere ar putea fi adăugate la configurație, de exemplu, un flux, un fișier jar, org.dom4j.Document. Metoda addClass () returnează un obiect de configurare. așa că se numește de mai multe ori la rând. Apoi, se adaugă o metodă la aplicația care generează prin configurația tabelului din baza de date.
Hibernate conține o aplicație consola pentru generarea de scripturi. În codul de mai jos, obiectul din clasa SchemaExport generează tabelele bazei de date pentru cartografiere configurată și proprietățile specificate, scrie textul
la un fișier (c: /temp/courses_script.sql) și execută codul SQL generat.
void privat generateAndExecuteCreationScript (Configurație configurație, Proprietăți proprietăți) aruncă HibernateException
SchemaExport export = nou SchemaExport (configurație, proprietăți);
export.setOutputFile ("c: \\ temp \\ curs_script.sql") .create (true. true);
În metoda de creare (adevărată, adevărată), script-text este generat pentru a crea tabele și este trimis la consola (determinată de primul parametru - true), iar tabelele de bază sunt create în bază de date (al doilea parametru este adevărat).
Sesiunea este interfața utilizată pentru salvarea și restaurarea obiectelor de clasă de la Curs și Student până la baza de date. SessionFactory este o memorie cache nemodificată pentru fire de cartografiere compilate pentru o bază de date, o fabrică pentru crearea obiectelor de sesiune.
1. Se creează un obiect SessionFactory
SessionFactory factory = noua Configurație () .configure () BuildSessionFactory ();
Metoda configure () a clasei Configuration introduce informații
la obiectul Configurare din fișierul de configurare Hibernate;
2. Se creează o sesiune.
Sesiune sesiune = factory.openSession ();
3. Toate rândurile de la curs și mesele elevilor sunt preluate. Solicitați text
iar comenzile sunt scrise în Hibernate-dialect. Este similară cu SQL, numai entitățile purtătoare de date sunt clase, nu tabele.
Lista cursurilor = session.find ("de la curs");
Listează elevii = session.find ("de la student");
4. La sfârșitul cererii, sesiunea se închide.
Interfața net.sf.hibernate.SessionFactory conține o serie de metode necesare:
openSession () - creează o conexiune la baza de date și deschide sesiunea. Ca parametru, o conexiune poate fi de asemenea transmisă, apoi o sesiune va fi creată pe o conexiune existentă;
close () - distruge SessionFactory și eliberează toate resursele folosite de obiect.
Interfața net.sf.hibernate.Session este un obiect cu durata scurtă de viață, care are loc între o aplicație și un depozit de obiecte de lungă durată, este utilizat pentru a naviga în graficul de obiecte sau pentru a căuta obiecte de către identificator. De fapt, este vorba despre clasa de împachetare în jurul conexiunii JDBC. În același timp, este o fabrică pentru obiectele tranzacției.
load (Class theClass, Serializable id) - returnează un obiect din această clasă cu identificatorul specificat;
load (obiect Object, Serializable id) - încarcă starea constantă a obiectului cu identificatorul specificat în obiectul a cărui pointer a fost transmis;
salvați (Obiect obiect [, Serializabil id]) - salvează obiectul transferat. Dacă este trecut un identificator, acesta este utilizat;
update (obiect Object [, Serializable id]) - actualizează obiectul persistent de identificatorul de obiect și dacă un identificator este trecut, acesta actualizează obiectul cu identificatorul specificat;
saveOrUpdate (obiect obiect) - în funcție de valoarea identificatorului, salvează sau actualizează obiectul;
get (Class class, Serializable id) - returnează un obiect din această clasă, cu identificatorul specificat sau null. dacă nu există un astfel de obiect;
delete (obiect obiect) - elimină obiectul din baza de date;
șterge (interogare șir) - șterge toate obiectele primite la cerere. De asemenea, este posibil să apelați o interogare cu ștergerea parametrilor (interogare String,
Obiecte Object [], Tipuri de tip []);
Transaction beginTransaction () - începe o unitate de lucru
și returnează o tranzacție asociată.
Pentru a executa interogări, utilizați instanța interfeței org.hibernate.Query. Puteți obține acest lucru utilizând obiectul Session:
Interfața de interogare are următoarele metode:
list () - execută interogarea, rezultatul este returnat colecției Listă;
executeUpdate () - pentru a efectua ștergeri, modificări aplicate obiectelor multiple;
session.createQuery ("șterge din companie unde status = 'closed'") executeUpdate ();
setString (index int, valoare String). setDate () și așa mai departe.
setează parametrul la interogare după index;
session.createQuery ("șterge din companie unde status =?") setString (0, 'închis') executeUpdate ();
De asemenea, puteți seta parametrul după nume:
session.createQuery ("șterge din companie unde status =: stat") setString ('stat', 'closed') executeUpdate ();
iterate () - returnează Iteratorul pe baza rezultatelor interogării
Iterator it = createQuery ("de la companie"). Iterate ();
Obiectele și colecțiile cu durată lungă de viață sunt obiecte cu un singur fir, de scurtă durată care conțin o stare persistentă
și funcțiile de afaceri. Acestea pot fi obișnuite obiecte JavaBean / POJO (obiecte simple vechi Java), caracteristica lor distinctivă fiind aceea că sunt asociate cu o sesiune (sesiune). Odată ce sesiunea este închisă, aceste obiecte devin deconectate și gratuite pentru utilizare la orice nivel al aplicației, de exemplu, direct ca obiecte de transfer de date spre și de la stratul de prezentare.
Obiectele și colecțiile temporare sunt exemple de clase de lungă durată care nu sunt asociate în prezent
cu sesiune. Acestea pot fi obiecte create de aplicație și nu sunt încă traduse într-o stare de lungă durată.
Tranzacția net.sf.hibernate.Transaction este un obiect cu durata scurtă de viață, utilizat cu o singură fire, folosit de aplicație pentru a indica unitatea atomică a lucrării efectuate. Rezumă cererea din tranzacțiile JDBC, JTA sau CORBA. În unele cazuri, o singură sesiune poate genera mai multe tranzacții:
commit () - fixează tranzacția bazei de date;
rollback () - obligă tranzacția să revină.
Interfața net.sf.hibernate.connection.ConnectionProvider este un furnizor de conexiune, o fabrică și un pool pentru conexiunile JDBC. Abstracte aplicația din obiectele de bază Datasource sau DriverManager. Obiectul intern Hibernate nu este disponibil pentru aplicație, dar poate fi extins sau implementat de dezvoltator. metode:
close () - eliberează toate resursele ocupate de furnizorul de conexiune;
closeConnection (Connection conn) - închide conexiunea utilizată;
configure (Properties props) - inițializează furnizorul de conexiune din proprietățile trecute.
Fabricata de tranzactii net.sf.hibernate.TransactionFactory este fabrica pentru instantele clasei Tranzactie. Obiectul intern Hibernate nu este disponibil pentru aplicație, dar poate fi extins sau implementat de dezvoltator.
beginTransaction (sesiune SessionImplementor) - începe tranzacția și returnează obiectul.
Cea mai simplă aplicație a claselor de mai sus când se adaugă
în implementările servlet ale metodelor generateAndExecuteCreationScript ()
și createProperties () arată astfel:
/ * exemplu # 5: cea mai simplă aplicație de hibernare. MainServlet.java * /