Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

INFOTEH-JAHORINA Vol. 11, March 2012.

Objektno-relaciono mapiranje podataka sa Hibernate


okvirom
Branislav Goji, Mile ivkovi

Maja ivkovi

studenti prvog ciklusa studija


Slobomir P univerzitet, Fakultet za informacione tehnologije
Doboj, Bosna i Hercegovina
branislav.gojic@fit.spu.ba, mile.zivkovic@fit.spu.ba

student drugog ciklusa studija


Univerzitet u Banjoj Luci, Elektrotehniki fakultet
Banja Luka, Bosna i Hercegovina
mayazivkovic@hotmail.com

SadrajU ovom radu e biti predstavljen Hibernate okvir,


njegove osnovne funkcionalnosti, Hibernate Core i komponente
koje se mogu koristiti uz Hibernate Core. Hibernate okvir ima
bogat API, prua mnogo mogunosti. Orijentisan je ka
programeru, tako to o mnogim zadacima ne mora da razmilja,
Hibernate okvir ih izvrsava umjesto programera, tako mu se
ostavlja vremena da se bavi poslovnim problemima aplikacije.
Tehnologija je vrlo sofisticirana i lagana za rad. Bitno se
smanjuje vrijeme kodiranja i broj linija koda.
Kljune rijei-Hibernate; JAVA; mapiranje; (key words)

I.

UVOD

Hibernate je proizvod kompanije JBoss (kompanija koja


pripada Red Hat-u). Inae, kompanija JBoss se specijalizovala
za open source rjeenja srednjeg sloja (middlware) aplikacije.
Svako rjeenje podrava mrea programera, oni koji su
uestvovali u razvoju tog rjeenja i oni koji su njegovi
korisnici.
Hibernate je licenciran pod open source GNU Lesser
General Public License (LGPL). Slobodno se moe preuzeti i
koristiti za razvoj aplikacija. Naravno licenca dozvoljava da se
aplikacije koje koriste Hibernate slobodno distribuiraju.
Hibernate je servis za objektno-relaciono perzistiranje
podataka i dizajn upita. Za Hibernate okvir se moe rei da je
jedno od najmonijih i najfleksibilnijih rjeenja za objektnorelaciono perzistiranje podataka, kompleksni projekat koji
namjerava da postane kompletno rjeenje za perzistenciju
podataka u Javi. Predstavlja medijatora izmeu aplikacije i
baze podataka, a ostavlja programera da se koncentrie na
poslovne procese aplikacije, dok neke procese izvrava sam
alat.

Hibernate eliminie ponovno i zamorno pisanje koda i


ostavlja programerima vremena za rjeavanje poslovnih
problema. Bez obzira koju strategiju razvoja aplikacije
koristimo odozgo na dole, poevi od reavanja poslovnih
problema i izrade domenskog modela, ili odozdo na gore,
poevi od postojee eme baze podataka.
Hibernate se tipino koristi za Swing aplikacije, Servlet
bazirane aplikacije, J2EE aplikacije koje koriste EJB (Entity
Java Beans). EJB 3.0 Java Persistence API(JPA) koristi
Hibernate 3.0 tako da znaajno smanjuje perzistentni model u
EJB standardu.
Hibernate okvir u sebi sadri sljedee interfejse: Core API
koji slui za pisanje perzistentnog sloja aplikacije, Extension
API kojim se vri konfigurisanje Hibernate okvira i Metadata
API koji omoguava pristup meta podacima za perzistenciju
podataka. Metadata API koriste aplikacije koje moraju da
konfiguriu automatizovano mapiranje podataka.
Hibernate okvir koristi objektno-orijentisani upitni jezik
HQL, koji po sintaksi dosta lii na SQL. U Hibernate okviru se
moe koristiti prirodni SQL dijalekt za bazu podataka koju
aplikacija koristi.
II.

ZAHTEVI ZA KORIENJE HIBERNATE-A

Performanse raunara neophodne za korienje Hibernate


okvira:

Rjeavanje problema preslikavanja iz objektnog modela u


relacioni i obratno je jako skupo. Mnogi softver inenjeri i
softver arhihekti smatraju da 30% linija koda ode na rjeavanje
ovog problema. Hibernate okvir samostalno mapira podatke iz
objektnog modela u relacioni model ili obrnuto, tako da
programer ne mora da razmilja o ovom poslu.

- 1192 -

Hibernate 2 zahtjeva JDK(Java Dvelopment Kit)


1.2 ili viu(1.4.2 i 1.5.0 se preporuuju)

Hibernate 3 zahtjeva JDK 1.3.1 ili viu(1.4.2 i


1.5.0 se preporuuju)

128 MB RAM

50 MB prostora na hard disku

400 MHz brzina procesora

Hibernate okvir je napisan u Java programskom


jeziku tako da se moe izvravati na svim
operativnim sistemima na kojima se moe
izvravati i Java(Windows, Unix, Linux i dr.).

Hibernate okvir podrava sledee baze podataka i


njihove SQL dijalekte: Oracle, DB2, Sybase, MS
SQL
Server,
PostgreSQL,
MySQL,
HypersonicSQL, Mckoi SQL, SAP DB, Interbase,
Pointbase, Progress, FrontBase, Ingres, Infomix i
Firebird.

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping3.0.dtd">
<hibernate-mapping>
<class name="domain.naziv klase" table="naziv tabele">
<id name="id" type="long" column="ID" >
<generator class="increment"/>
</id>
<property name="atribut 1">
<column name="kolona 1" />
</property>
<property name="atribut 2">
<column name="kolona 2" />
</property>
.
.
.
<property name="atribut n">
<column name="ADDRESS"/>
</property>
</class>
</hibernate-mapping>

Na osnovu navedenih zahtjeva i mogunosti moe se


zakljuiti da Hibernate ne zahtjeva znaajne performanse
raunara.
III.

PODEAVANJE HIBERNATE OKRUENJA I


IMPLEMENTACIJA

Da bi uspjeno koristili hibernate okvir, pored Hibernate-a


za rad je potrebno instalirati JDK, zatim editor u kome bi se
razvijala softverska aplikacija.
Kada se napravi Java aplikacija pored standardnih
biblioteka potrebno je dodati sljedee:

antlr.jar

asm.jar

asm-attrs.jars

c3p0.jar

cglib.jar

commons-collections.jar

commons-logging.jar

dom4j.jar

hibernate3.jar

ojdbc14.jar

jta.jar

Umjesto XML fajla moemo koristiti direktno anotacije u


kodu. Koji god nain koristili Hibernate ima dovoljno
informacija da generie SQL naredbe. Programer vie nije u
obavezi da svaki put iznova pie ove naredbe.
Objasnit emo tri kljuna intrfejsa iz Hibernate API-a:
Session, Transaction i Query.

Fajl ojdbc14.jar je drajver za Oracle bazu podataka. Ako


aplikacija koristi neku drugu bazu podataka potrebno je ovaj
fajl zamijeniti odgovarajuim.
Da bi se izvrilo automatizovano objektno/relaciono
mapiranje potrebno je opisati Hibernate okviru kako ti podaci
treba da se transformiu iz objektnog modela u relacioni model
[1]. Jednostavno, Hibernate treba da zna u kakvoj strukturi e
se uvati objekti u bazi podataka i kako e se preuzimati iz
baze. Podaci o objektno-relacionom mapiranju se piu u xml
fajlovima za mapiranje i zovu se meta podaci. Naziv tabele ne
mora biti indentian nazivu domenske klase.

Session interfejs Hibernate Session objekat predstavlja


mnogo stvari u jednom. To je jednonitni nedjeljivi objekat koji
predstavlja posebnu jedinicu posla sa bazom podataka. Ovaj
objekat ima svoj API za upravljanje perzistencijom. Tako da
moe da uva objekte u bazi i da ih preuzima iz baze. Session
objekat sadri SQL naredbe koje ekaju u redu da se
sinhronizuju sa bazom podataka i mapu perzistentnih objekata
kojima upravlja.
Transaction interfejs Ovaj objekat se bavi ivotnim
vijekom transakcije. Predstavlja vii nivo apstrakcije iznad
JDBC-a. Ako se ne koristi transaction objekat, programeru
ostaje jedino da koristi direktno JDBC.
Query interfejs - Sa Query objektom upit se moe pisati u
Hibernate orijentisanom jeziku HQL, a moe se koristiti i
prirodni SQL. Rezultat koji se dobija iz baze moe biti jedan
objekat ili lista objekata.

- 1193 -

IV.

KONFIGURACIJA HIBERNATE OKVIRA

Korienje Hibernate okvira zapoinje instanciranjem


SessionFactory objekta, koji nastaje od Configuration objekta.
Configuration objekat se moe zamisliti kao prezentacija
konfiguracionog fajla za Hibernate okvir [2].
Configuration objekat se pravi tako to se automatski
detektuje konfiguracioni fajl.
SessionFactory sessionFactory =
new Configuration().configure().buildSessionFactory();

V.

Kako program na osnovu ove linije koda zna gde je


konfiguracioni fajl? Kada se pozove konstruktor new
Configuraion(), Hibernate trai fajl hibernate.properties u
glavnom folderu projekta. Ukoliko ih pronae svi
hibernate.prperties fajlovi su uitani i dodati u Configuration
objekat. Kada se pozove metoda configure(), Hibernate trai
fajl hibernate.cfg.xml u glavnom folderu projekta i baca
izuzetak ukoliko ga ne nae. Fajl hibernate.cfg.xml moete
postaviti i u neki drugi folder, ali je onda obavezno u metodi
configure navesti putanju do njegovog fajla.
Sljedi kreiranje konfiguracionog fajla za Hibernate
aplikaciju. Preporuuje se da se konfiguracioni fajl zove
hibernate.cfg.xml i da se postavi u source direktorijum. Tako
e ovaj fajl ostati u glavnom folderu projekta nakon
kompajliranja i Hibernate okvir e ga automatski nai.
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernateconfiguration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">
oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">
jdbc:oracle:thin:@localhost:1521:XE</property>
<property name="hibernate.connection.username">
pos</property>
<property name="hibernate.connection.password">
pos</property>
<property name="hibernate.connection.pool_size">
100</property>
<property name="show_sql">true</property>
<property name="dialect">
org.hibernate.dialect.OracleDialect</property>
<property name="hibernate.hbm2ddl.auto">
update</property>
<mapping
resource="domain/mapping/employee.hbm.xml"/>
i

<mapping
resource="domain/mapping/warehouse.hbm.xml"/>
resource="domain/mapping/inventorycountdocumentite
m.hbm.xml"/>
</session-factory>
</hibernate-configuration>

HIBERNATE ANOTACIJE

Hibernate zahtjeva meta podatke koji vre transformaciju


od jedne reprezentacije podataka u drugu. Hibernate
obezbeuje, pored xml fajlova, i meta podatke za mapiranje u
vidu anotacija [2].
Iznad svake domenske klase se postavlja anotacija @Entity,
to znai da svaka domenska klasa predstavlja jedan entitet
(objekat) u sistemu. Sljedea anotacija koja se postavlja iznad
klase je @Table(appliesTo = naziv tabele). Njome se
povezuje entitet sa odgovarajuom tabelom u bazi. Sljede neke
od anotacija za atribute domenske klase:
@Id Identifikator identiteta
@Generated Value Odreuje strategiju za generisanje
identifikatora. Neke od strategija su: AUTO, TABLE,
IDENTITY, SEQUENCE, itd
@Column(name = ID) Anotacija za kolonu
Anotacija se moe staviti na atribut ili na geter atributa.
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernateconfiguration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">
oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">
jdbc:oracle:thin:@localhost:1521:XE</property>
<property name="hibernate.connection.username">
pos</property>
<property name="hibernate.connection.password">
pos</property>
<property name="hibernate.connection.pool_size">
100</property>
<property name="show_sql">true</property>
<propertyname="dialect">
org.hibernate.dialect.OracleDialect</property>
<property
name="hibernate.hbm2ddl.auto">update</property>
<mapping class="domain.naziv klase"/>
</session-factory>
</hibernate-configuration>
Ostaju jo promene u hibernate.cfg.xml fajlu.

- 1194 -

Moete primetiti da umesto putanje do XML fajlova za


mapiranje, postavlja se putanja do klase koja u sebi ima
elemente mapiranja (anotacije).
VI.

SESSION OBJEKAT

Session objekat predstavlja centralnu taku u pristupu


Hibernate funkcionalnostima. Session objekat slui da kreira
nove objekte u bazi, aurira, postojee objekte u bazi, da brie
objekat iz baze i da ita objekte iz baze [1], [2].
Posmatrajui JDBC pristup, Session objekat moe da se
posmatra kao JDBC konekcija, a SessionFactory koji kreira
Session objekte, moe da se posmatra kao ConnectionPool koji
stvara Connection objekte u JDBC-u.
SessionFactory je veoma skup objekat, njegovo dupliranje
(ili instanciranje vie puta) moe da prouzrokuje probleme
veoma brzo, a kreiranje ovog objekta oduzima dosta vremena u
toku izvravanja(runtime). Idealno bi bilo kada bi za jednu
bazu podataka bio napravljen samo jedan SessionFactory
objekat. Takoe poto je SessionFactory thread-safe, to je jo
jedan razlog da se objekat instancira samo jednom i da sve niti
u aplikaciji koriste taj objekat. Session objekti u Hibernate nisu
thread safe. Preporuuje se da se kreira vie Session objekata,
za svaku programsku nit po jedan. Djeljenje Session objekata
izmeu vie programskih niti moe da prouzrokuje gubitak
podataka ili deadlock. Ukoliko Hibernate Session objekat baci
izuzetak bilo koje vrste, potrebno ga je unititi i napraviti novi
objekat. Ova prevencija titi podatke u Session ke memoriji da
ne postanu nekonzistentni u odnosu na podatke iz baze.

Teorijiski transakcija mora da ima sledee osobine (ACID


osobine):
Autonomnost (Automicity) - Transakcija je sve ili nita.
Ukoliko se ne izvre sve aktivnosti i operacije nad bazom,
transakcija se ponitava. Ponitavaju se sve operacije(naredbe)
koje su se izvrile (deo transakcije koji se izvrio rollback).
Tako se brzo vraa u prethodno stanje.
Konzistentnost (Consistency) Transakcija ne sme da
poniti pravila koja su definisana u bazi podataka. Ako iz
nekog razloga transakcija poniti pravila baze podataka, onda
se ona ponitava.
Izolacija (Isolation) Efekti transakcije ne mogu biti
vidljivi drugim transakcijama dok se ona ne izvri uspeno.
Meutim, da bi se poveao paralelizam obrade transakcija,
jednom SUBP se dozvoljavaju razliiti nivoi izolativnosti
podataka.
Trajnost (Durability) Kada su neke promene potvrene u
bazi one se ne mogu vie izgubiti.
Meutim ukoliko su ove osobine u potpunosti ispunjene, to
moe uticati na smanjenje performansi aplikacije. Zato
proizvoai baza podataka, dozvoljavaju krenje ovih osobina
u veoj ili manjoj mjeri [3].
Postoje sljedei nivoi izolacije:

VII. TRANSAKCIJE I ZAKLJUAVANJE


Transakcija i zakljuavanje objekata u bazi su dvije
operacije koje su usko povezane. Tehnike zakljuavanja
omoguuju uspenost transakcije. U zavisnosti od toga kakva
je transakcija zavisi i koji e se podaci zakljuati. Koristei
Hibernate okvir programer nije u obavezi da koristi
Transaction interfejs, ali zato bi morao da koristi flush() metod
nad Session objektom, svaki put kada su izvrene promjene u
bazi.
Transakcija predstavlja jedno izvrenje neke logike
jedinice posla korisnika baze podataka. Transakcija moe biti
startovana, trajno zapamena u bazi podataka (commit) ili
ponitena (rollback). Da bi ovo postigli moramo prvo zapoeti
transakciju session.beginTransaction() i tek onda manipulisati
transakcijom. Dat je primjer koda.
Session session = factory.openSession();
try {
session.beginTransaction();
// Kod gde se manipulie sa Session objektom
session.getTransaction().commit();
} catch (HibernateException e) {
Transaction tx = session.getTransaction();
if (tx.isActive()) tx.rollback();
} finally {
session.close();
}

Nema izolacije Sve je dozvoljeno. Baza


podataka ili drajver ne podrava transakcije.

Read Uncommited Prljavo, neponovljivo i


fantomsko itanje je dozvoljeno.

Read Commited Neponovljivo i fantomsko


itanje je dozvoljeno.

Repetable Read Fantomsko itanje je dozvoljeno

Serializable Pravila se moraju ispotovati u


potpunosti.

Baza podataka moe da obezbedi razliite nivoe izolacije.


Na programeru je da proceni koji e nivo izolacije koristiti i
kako e to uticati na performanse aplikacije. Da bi se sprjeili
simultani pristupi podacima, baza sama zakljuava podatke.
Zakljuavanje moe biti momentalno, dok se naredba izvrava
nad podacima ili zakljuavanje moe trajati do zavretka
transakcije. Prva vrsta zakljuavanja se zove optimistino, a
druga pesimistino zakljuavanje.
VIII. KEIRANJE
Pristup bazi podataka je skupa operacija ak i za
jednostavan upit. Zahtev esto mora biti poslat preko mree do
servera. Baza podataka mora da kompajlira SQL upitni jeziku
jezik razumljiv bazi podataka. Ukoliko je u pitanju select upit
podaci se opet trebaju vratiti do klijentskog sloja. Jo ako
podaci trebaju proi preko mree, to znatno usporava rad
aplikacije.
Veina baza podataka keira (uva podatke u memoriji)
rezultate upita ako se izvravaju vie puta. Tako se smanjuje
vrijeme komunikacije sa diskom (gdje su podaci) i
kompajliranja upita. Meutim, to nije velika uteda vremena,

- 1195 -

ako imamo u vidu da imamo vie klijenata koji prave razliite


zahtjeve.
JDBC ne obezbjeuje keiranje direktno.
Hibernate
obezbjeuje prvi nivo keiranja( L1 ke) kroz koji prolaze svi
zahtjevi, drugi nivo keiranja je opcioni i moe da se
konfigurie. L1 ke za isti zahtjev vraa response iz kea (
objekte koji su u keu, a odnose se na taj zahtjev), ne ide se do
baze. Da bi se izbrisali objekti iz kea, koji se odnose na jedan
request objekat koristi se evict() metod. Da bi se u potpunosti
ispraznio ke koristi se clear() metod. L1 ke je definitivno
prednost Hibernate okvira u odnosu na JDBC.

X.

HIBERNATE VALIDACIJA

Validacija podataka je obavezna za svaku aplikaciju. Bitna


je kako prezentacioni sloj tako i za perzistentni sloj. esto je
ista logika za validaciju implementirana na svim slojevima,
tako se smanjuje broj greaka i manje je vrijeme za
implementaciju. Da bi izbjegli dupliranje validacija na svakom
sloju, programeri esto celu validacionu logiku ubace u
domenski model. Tako domenske klase predstavljaju klase sa
meta podacima za validaciju podataka.

Na slici moemo vidjeti dva kea koji su dostupni Session


objektu. Obavezan L1 ke kroz koji zahtjevi moraju proi i
opcioni L2 ke. L1 ke e uvijek biti kontaktiran pe nego to se
kontaktira ke L2.

Slika 2. Validacija po slojevima [HibernateValidation]

JSR-303(Java Specification Request) predstavlja


validaciju objekta (bean validation). Definie model meta
podataka i API za validaciju objekta. Anotacije su
podrazumevani izvor meta podataka. Anotacije imaju
mogunost da preklope i naslede meta podatke kroz korienje
XML-a. API nije vezan za specifian sloj aplikacije.
Podjednako je dostupan i za serversku i za klijentsku stranu
aplikacije. Hibernate validator je implementacija JSR-303.

Slika 1. Veza izmeu Session objekta i dva kea

L2 se nalazi eksterno van Hibernate okvira. Tako ga moe


koristiti vie aplikacija ili vie distribuiranih aplikacija. Koliko
je opcioni ke potraban, i koji treba izabrati, najbolje je otkriti
testiranjem aplikacije, a jo bolje ponaanjem aplikacije u
produkciji.
IX.

HIBERNATE UPITNI JEZIK

Hibernate Query Language ( u daljem tekstu HQL) je


objektno orijentisan upitni jezik. Slian je SQL-u, ali pored
operacije nad tabelama i kolonama, HQL radi sa perzistentnim
objektima i njihovim atributima. HQL-om se mogu dobijati
podaci iz baze (select naredba ) ili se mogu aurirati podaci u
bazi (inset, update, delete ). HQL-om se ne moe promjeniti
struktura baze (alter table, alter column, itd). HQL je jezik sa
svojom sintaksom i gramatikom. HQL upiti se prevode u SQL
upite, a Hibernate okvir ima mogunost da direktno koristi
SQL upite.
HQL se preporuuje kada je god to mogue kako bi se
izbjegli problemi sa portabilnou SQL-a sa bazom podataka.
HQL je mnogo kompaktniji jezik od SQL jer koristi
informacije definisane u Hibernate mapiranju.
HQL sintaksa je definisana ANTLR [2] gramatikom.
Fajlovi za gramatiku se nalaze u folderu za gramatiku u
Hibernate Core. ANTLR je alat za pravljenje parsera za jezike.

Slika 3. Validacija u domenskom modelu [HibernateValidation]

XI.

DEFINISANJE OGRANIENJA

Objekat u Java aplikaciji je validan, ako je u skladu sa svim


ogranienjima koja se odnose na taj objekat. Ogranienja u
validaciji objekta se opisuju kroz java anotacije. U ovom dijelu
emo objasniti kako se koristi Hibernate validator tj. kako on
validira ogranienja opisana u anotacijama u domenskom
modelu. Razlikujemo tri vrste ogranienja: nivo metode i nivo
klase. Moramo znati da ne mogu sva ogranienja da se postave
za svaki nivo.
Kada se koriste ogranienja na nivou polja, pristupa se
vrednosti tog polja i proverava se da li je ona u skladu sa
ogranienjem. Tip pristupa moe bit private, protected ili
public. Static polja i metode ne mogu biti validirane. Validacija
se postavlja tako to se postavi anotacija iznad polja.

- 1196 -

Umesto polja moe se anotirati njen getter, ne moe se


koristiti setter. Preporuka je koji god se metod koristi (polja ili
metode) da se koristi jedan ili drugi jer ako budemo imali dvije
anotacije, validacija e se bespotrebno vriti dvaput.
Ogranienje moe biti postavljeno i na nivo klase. Kada se
ogranienje postavi na nivo klase onda se svaki objekat te klase
validira u skladu sa ogranienjima klase.
XII. NASLEIVANJE OGRANIENJA
Kada se validira objekat koji implentira interfejs ili
nasleuje klasu, validiraju se ne samo njegova ogranienja, ve
i ogranienja koja implementira njegov interfejs ili ogranienja
roditeljske klase.

Set je prazan ukoliko je validacija uspjela. U suprotnom za


svako prekreno ogranienje je dodat ConstraintViolation
objekat. Metoda validate() proverava sva ogranienja
prosleenog objekta.
ZAHVALNICA
Istraivanja u ovom radu raena su u sklopu projektnog
rada iz predmeta Nove softverske tehnologije na prvom
ciklusu studija na fakultetu za informacione tehnologije,
Slobomir P Univerziteta, pod mentorstvom prof. dr. Sinie
Vlajia.
LITERATURA
[1]
[2]

XIII. VALIDACIJA OGRANIENJA OBJEKTA


Validator interfejs je glavna ulazna taka za validaciju
objekta. Validator objekat se dobija od ValidatorFactory
objekta. ValidationFactory se dobija preko statike metode
Validation.buildDefaultValidationFactory(). Sledi primer koda
ValidatorFactory factory =
Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Validator interfejs ima tri metode koje mogu da se koriste
bilo za validaciju cjelog objekta ili za validaciju jednog atributa
u objektu. Sve tri metode vraaju Set<ConstraintViolation>.

[3]

Christian Bauer, Gaving King: Java Persistence with Hibernate, 2007.


Ilija Antovi: Objektno-relaciono mapiranje i primjena korienjem
Hibernate okvira, 2009 .
Dave Minter, Jeff Linwood: Begining Hibernate, Apress, 2006.
ABSTRACT

This document will be presented to the Hibernate framework,


its basic functionality of Hibernate Core and components thet
can be used with the Hibernate Core. Hibernate framework
has a rich API, provides many opportunities. Oriented to the
programmer, so what about the many does not have to think, it
gets the Hibernate framework rather than programmers, so he
leaves time to deal with the problems of business applications.
The technology is very sophisticated and easy to operate . It
reduces coding time and number of lines of code.
PAPER TITLEOBJECT-RELATIONAL MAPPING
DATA WITH THE HIBERNATE FRAMEWORK
Goji Branislav
Mile ivkovi
Maja ivkovi

- 1197 -

You might also like