Sunteți pe pagina 1din 13

Curs: Object-relational mapping - Hibernate

Modul: Exemplu de aplicaie cu mapare obiectual-relaional folosind JDBC


i SQL - aplicaia de introducere a crilor
Unitate: Arhitectura pe trei straturi i ablonul MVC - partea
a II-a

Figura 1: Arhitectura pe trei straturi a aplicaiei de introducere a


crilor

Copyright Link group

1 / 13

Curs: Object-relational mapping - Hibernate


Modul: Exemplu de aplicaie cu mapare obiectual-relaional folosind JDBC
i SQL - aplicaia de introducere a crilor
Unitate: Arhitectura pe trei straturi i ablonul MVC - partea
a II-a

Primul strat
Pe de o parte, acest strat reprezint intrarea n sistemul software, iar
pe de alt parte, ieirea din el. Adesea sunt controverse n jurul temei
dac acest nivel face parte din sistemul software sau este izolat de
acesta. n acest caz utilizm ipoteza conform creia interfaa de
utilizator este o parte izolat a sistemului software. Scopul principal al
acestui strat este comunicarea utilizatorului cu sistemul software.

Figura 2: Stratul I (interfaa de utilizator) al aplicaiei de introducere a


crilor

Dac sistemul software este implementat ntr-un mediu web distribuit,


interfaa de utilizator este, de obicei, sub forma unei pagini web JSP
sau JSF. n cazul nostru, cnd avem o aplicaie desktop, interfaa de
utilizator este JframeForm.
n fundalul fiecrui formular este apelat clasa Java - FormController,
de obicei, utiliznd un eveniment precum clic pe un buton, ceea ce
reprezint o legtur ntre sistemul software i interfaa sa. n cazul
nostru, aceast clas i metoda sa, saveBook(), se utilizeaz pentru a
transmite datele introduse n formularul BusinessLogicController ce

Copyright Link group

2 / 13

Curs: Object-relational mapping - Hibernate


Modul: Exemplu de aplicaie cu mapare obiectual-relaional folosind JDBC
i SQL - aplicaia de introducere a crilor
Unitate: Arhitectura pe trei straturi i ablonul MVC - partea
a II-a

reprezint o intrare unic n sistemul software.


Stratul I (controlerul interfeei de utilizator) al aplicaiei de
introducere a crilor:
public class FormController {

BusinessLogicController businessLogicController;
public FormController() {
businessLogicController = new BusinessLogicController();
}

public void saveBook(JTextField name, JTextField isbn,


JTextField keyWords) {
businessLogicController.saveBook(name.getText(),
isbn.getText(), keyWords.getText());
}
}

Stratul al II-lea
Acest strat se numete stratul logicii aplicaiei. Acesta const din trei
pri:
controlerul logicii de afaceri,

clasa de domeniu,

DBBroker.

Copyright Link group

3 / 13

Curs: Object-relational mapping - Hibernate


Modul: Exemplu de aplicaie cu mapare obiectual-relaional folosind JDBC
i SQL - aplicaia de introducere a crilor
Unitate: Arhitectura pe trei straturi i ablonul MVC - partea
a II-a

Controlerul logicii de afaceri


Aceast clas reprezint o intrare unic n sistemul software. Aici se
efectueaz ntreaga logic de afaceri. Pe de o parte, refereniaz
obiectele claselor de domeniu, iar pe de alt parte le transmite
DBBroker-ului, care ntreine persistena obiectelor.
Al II-lea strat (controlerul logicii de afaceri) al aplicaiei de
introducere a crilor:
public class BusinessLogicController {

DBBroker broker; // Clasa responsabil? cu persisten?a


obiectelor de domeniu
public BusinessLogicController() {
broker = new DBBroker();
}

public void saveBook(String name, String isbn, String


keyWords) {
Book book = new Book(name, isbn, keyWords); // Referin?a
la obiectele persistente
try {
broker.saveBook(book);
} catch (SQLException ex) {
Logger.getLogger(BusinessLogicController.class.getName())
.log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(BusinessLogicController.class.getName())
.log(Level.SEVERE, null, ex);
}

Copyright Link group

4 / 13

Curs: Object-relational mapping - Hibernate


Modul: Exemplu de aplicaie cu mapare obiectual-relaional folosind JDBC
i SQL - aplicaia de introducere a crilor
Unitate: Arhitectura pe trei straturi i ablonul MVC - partea
a II-a

}
}

Clasele de domeniu
Aceste clase reprezint, de fapt, modelele conceptuale, implementate
ale aplicaiei. n cazul nostru, clasa de domeniu este Book.
Stratul al II-lea (clasele
introducere a crilor:

de

domeniu)

al

aplicaiei

de

public class Book {

String name;
String isbn;
String keyWords;

public Book(String name, String isbn, String keyWords) {


this.name = name;
this.isbn = isbn;
this.keyWords = keyWords;
}
}

DBBroker
Aceast clas este utilizat pentru a comunica cu baza de date.
Conine toi parametri necesari pentru efectua conectarea la sistemul
de gestionare a bazei de date dorit. Orice comunicare cu sistemul de
gestionare a bazei de date se realizeaz numai prin DBBroker.

Copyright Link group

5 / 13

Curs: Object-relational mapping - Hibernate


Modul: Exemplu de aplicaie cu mapare obiectual-relaional folosind JDBC
i SQL - aplicaia de introducere a crilor
Unitate: Arhitectura pe trei straturi i ablonul MVC - partea
a II-a

Stratul al II-lea (clasa de comunicare - DBBroker) al aplicaiei


de introducere a crilor:
public class DBBroker {
private Connection connection;
String connectionString =
"jdbc::mysql://localhost/booksdatabase";
public void loadDriver() throws ClassNotFoundException {
Class.forName("com.mysql.jdbc.Driver");
}
public void makeConnection(String url) throws
SQLException {
connection =
DriverManager.getConnection(url,"root","root");
connection.setAutoCommit(false);
}
public void closeDatabase() throws SQLException {
connection.commit();
}
public void saveBook(Book book) throws SQLException,
ClassNotFoundException {
loadDriver();
makeConnection(connectionString);
String bookAttributeValues = "('" + book.name + "','" +
book.isbn + "','" + book.keyWords + "')";
String query = "insert into Book (name, isbn,
keyWords)values " + bookAttributeValues;
PreparedStatement prepareQuery =
connection.prepareStatement(query);
prepareQuery.executeUpdate();
prepareQuery.close()
closeDatabase();
}
}

Aceast aplicaie conine urmtoarele obiecte:

Copyright Link group

6 / 13

Curs: Object-relational mapping - Hibernate


Modul: Exemplu de aplicaie cu mapare obiectual-relaional folosind JDBC
i SQL - aplicaia de introducere a crilor
Unitate: Arhitectura pe trei straturi i ablonul MVC - partea
a II-a

transient: formulare, controler de formular, controlerul logicii de


afaceri, broker,

persistente: carte.

Despre aceste obiecte vom vorbi mai mult n leciile viitoare. Pentru
moment, este important de subliniat faptul c obiectele transient
servesc doar ca suport pentru ntreinerea obiectelor persistente. O
biectele transient dureaz atta timp ct este deschis aplicaia.
Spre deosebire de acestea, obiectele persistente "supravieuiesc"
duratei aplicaiei i a sistemului de operare i rmn n baza de date
pentru totdeauna. Dac este vorba de o baz de date relaional,
apare problema maprii obiectual-relaionale, ce reprezint
subiectul acestui curs.

Stratul al III-lea
Acesta este stratul bazei de date. Scopul su principal este s
stocheze datele i dup ce aplicaia i ntregul sistem de operare au
ncetat s funcioneze. Odat cu dezvoltarea limbajelor orientate pe
obiect i a abordrii complet orientat pe obiect a dezvoltrii
software-ului, a aprut nevoia de dezvoltare i a unor baze de date
orientate pe obiect. ns, din diverse motive, care vor fi enumerate n
continuare, aceste baze de date nu sunt nc utilizate la scar larg.

Diferena dintre bazele de date orientate pe obiect i


bazele de date relaionale
Dezvoltarea sistemelor de gestionare a bazelor de date orientate pe

Copyright Link group

7 / 13

Curs: Object-relational mapping - Hibernate


Modul: Exemplu de aplicaie cu mapare obiectual-relaional folosind JDBC
i SQL - aplicaia de introducere a crilor
Unitate: Arhitectura pe trei straturi i ablonul MVC - partea
a II-a

obiect are tendina de a echivala obiectele din baza de date i


obiectele din aplicaie, singura diferen fiind "durata lor de via".
Spre deosebire de obiecte, pentru a putea salva structura obiectelor
dintr-o aplicaie ntr-o baz de date relaional, trebuie, n primul rnd,
s o transformm ntr-un set corespunztor de tabele din baza de date
relaional, ceea ce poate fi uneori o sarcin foarte dificil i
complex, care necesit mult timp.

Figura 3: Prezentarea comparativ a bazelor de date: relaional i


orientat pe obiect

Avantajele sistemelor de obiecte pentru gestionarea


bazelor de date, n raport cu sistemele relaionale
pentru gestionarea bazelor de date
Sistemele de gestionare a bazelor de date orientate pe obiect

Copyright Link group

8 / 13

Curs: Object-relational mapping - Hibernate


Modul: Exemplu de aplicaie cu mapare obiectual-relaional folosind JDBC
i SQL - aplicaia de introducere a crilor
Unitate: Arhitectura pe trei straturi i ablonul MVC - partea
a II-a

includ un model de domeniu foarte bogat . Designerii bazelor


de date orientate pe obiect pot modela sisteme de afaceri foarte
expresive i bogate, fr s i fac griji cu privire la restriciile
impuse de abordarea relaional.

Sistemele de gestionare a bazelor de date orientate pe obiect


sunt pe deplin compatibile cu abordarea orientat pe obiect, au
suport ncorporat pentru identitate, motenire, agregare i
polimorfism, toate accelernd foarte mult dezvoltarea n sine.

Sistemele de gestionare a bazelor de date orientate pe obiect au


performane mai bune dect sistemele de gestionare a bazelor de
datele relaionale, lucru ce devine i mai evident n special n
sisteme cu modele de obiecte complexe, deoarece nu trebuie s
utilizeze interogri i mapri foarte complexe.

Sistemele de gestionare a bazelor de date orientate pe obiect


devin mai avantajoase n aplicaii cu structuri complexe de date,
ceea ce nu este cazul n aplicaiile de afaceri. Aplicaiile de
afaceri au obiecte simple, iar tipul de nregistrare, precum
modelul, este complet adecvat pentru ele.

Avantajele sistemelor relaionale de gestionare a


bazelor de date n comparaie cu sistemele orientate
pe obiect pentru gestionarea bazelor de date
Sistemele relaionale de gestionare a bazelor de date sunt foarte
flexibile n ceea ce privete aplicaiile care pot lucra cu ele.
Aplicaiile scrise n orice limbaj sau paradigm i pe orice

Copyright Link group

9 / 13

Curs: Object-relational mapping - Hibernate


Modul: Exemplu de aplicaie cu mapare obiectual-relaional folosind JDBC
i SQL - aplicaia de introducere a crilor
Unitate: Arhitectura pe trei straturi i ablonul MVC - partea
a II-a

platform i pot stoca datele n sisteme relaionale de gestionare


a bazelor de date, spre deosebire de sistemele orientate pe
obiect care sunt strict legate de paradigma orientat pe obiect.

Sistemele relaionale de gestionare a bazelor de date sunt n


continuare foarte utilizate i, cu mult nainte de dezvoltarea
limbajelor orientate pe obiect i a paradigmei obiectuale, s-au
investit mult efort i muli bani n dezvoltarea lor.

Deoarece exist de foarte muli ani, sistemele relaionale de


gestionare a bazelor de date au devenit compatibile cu
implementrile diverilor productori, spre deosebire de
sistemele orientate pe obiect de gestionare a bazelor de date
care sunt nc relativ noi i nu sunt att de dezvoltate.

Prin urmare, se acord o mare atenie, nu att dezvoltrii


sistemului de transformare a obiectelor n relaie n cadrul
codului programelor obiectuale, ct dezvoltrii bazelor de date
orientate pe obiect. Aceste sisteme sunt numite popular cadru
software de persisten (Software Framework) i unul dintre cele
mai cunoscute este HIBERNATE, pe care, n continuarea cursului, l
vom explica detaliat. Pentru moment, putem spune doar c acest
cadru servete la facilitarea funcionrii aplicaiilor orientate pe obiect
i a bazelor de date relaionale.

Copyright Link group

10 / 13

Curs: Object-relational mapping - Hibernate


Modul: Exemplu de aplicaie cu mapare obiectual-relaional folosind JDBC
i SQL - aplicaia de introducere a crilor
Unitate: Arhitectura pe trei straturi i ablonul MVC - partea
a II-a

ORMH_07 - Maparea obiect-relaional


Hibernate
1. Stratul logicii aplicaiei const din trei pri:
a) nterfaa de utilizator, clasele de domeniu, DBBroker
b) controlerul logicii de afaceri, clasele de domeniu,
DBBroker
c) controlerul interfeei de utilizator, controlerul logicii de
afaceri, clasele de domeniu
d) interfaa de utilizator, controlerul logicii de afaceri, clasele
de domeniu
2. Care din urmtoarele clase este folosit pentru a comunica
cu baza de date n arhitectura pe trei straturi?
a) DBBroker
b) controlerul logicii de afaceri
c) clasa de domeniu
3. Cum se numete obiectul care continu s existe (ntr-o
anumit form) i dup ncheierea aplicaiei care l-a creat?
a) transient
b) persistent
c) permanent
4. Obiectele a cror durat de via este limitat la durata
aplicaiei care le-a creat se numesc:
a) transient
b) persistente
c) aplicative
5. Care dintre urmtoarele clase reprezint un punct de intrare
unic n sistemul software?
a) DBBroker
b) controlerul logicii de afaceri

Copyright Link group

11 / 13

Curs: Object-relational mapping - Hibernate


Modul: Exemplu de aplicaie cu mapare obiectual-relaional folosind JDBC
i SQL - aplicaia de introducere a crilor
Unitate: Arhitectura pe trei straturi i ablonul MVC - partea
a II-a

c) clasa de domeniu
6. Hibernate reprezint un cadru software ntre:
a) aplicaiile orientate pe obiect i bazele de date orientate
pe obiect
b) aplicaiile procedural-orientate i bazele de date orientate
pe obiect
c) aplicaiile orientate pe obiect i bazele de date relaionale
d) aplicaiile procedural-orientate i bazele de date
relaionale

Copyright Link group

12 / 13

Curs: Object-relational mapping - Hibernate


Modul: Exemplu de aplicaie cu mapare obiectual-relaional folosind JDBC
i SQL - aplicaia de introducere a crilor
Unitate: Arhitectura pe trei straturi i ablonul MVC - partea
a II-a

1. Stratul logicii aplicaiei const din trei pri:


b
2. Care din urmtoarele clase este folosit pentru a comunica
cu baza de date n arhitectura pe trei straturi?
a
3. Cum se numete obiectul care continu s existe (ntr-o
anumit form) i dup ncheierea aplicaiei care l-a creat?
b
4. Obiectele a cror durat de via este limitat la durata
aplicaiei care le-a creat se numesc:
a
5. Care dintre urmtoarele clase reprezint un punct de intrare
unic n sistemul software?
b
6. Hibernate reprezint un cadru software ntre:
c

Copyright Link group

13 / 13

S-ar putea să vă placă și