Vra

Op die oomblik is ek maak 'n uiters eenvoudige website- ongeveer 5 bladsye. Vraag is of dit overkill en die moeite werd om die tyd om 'n soort van databasis kartering oplossing te integreer of indien dit sal beter wees om net te gebruik plain ou JNDI. Ek sal miskien 'n dosyn dinge wat ek nodig het om te lees / skryf van die databasis het. Ek dink ek het 'n basiese begrip van hierdie tegnologie, maar dit sal nog 'n groot deel van verwysing na die dokumentasie. Enigiemand anders te make met die besluit voor?

EDIT: Jammer, ek moet verskaf het JNDI om die DB verbinding en JDBC om die bedrywighede uit te voer soek

.
Was dit nuttig?

Oplossing

Kort antwoord: Dit hang af van die kompleksiteit wat jy wil ondersteun

.

Long antwoord:

In die eerste plek, ORM (beswaar relational mapping - databasis kartering as jy dit noem -) en JNDI (Java Naming en Gids Interfaces) is twee verskillende dinge.

Die eerste as jy reeds weet, word gebruik om die databasis tabelle om klasse en objekte te karteer. Die tweede is om 'n lookup meganisme vir hulpbronne te voorsien, hulle kan DataSources, EJB, Toue of ander wees.

Miskien is jou gemiddelde "JDBC".

Nou as vir jou vraag: As dit so eenvoudig kan wees dit sal nie nodig wees om 'n ORM implementeer. Die aantal tafels sal ongeveer 5 wees - 10 by die meeste, en die bedrywighede regtig eenvoudig, dink ek.

Waarskynlik met behulp van eenvoudige JDBC genoeg sou wees.

As jy die DAO patroon gebruik jy dalk dit later verander na die ORM strategie te ondersteun as dit nodig is.

Soos hierdie: Sê jy het die Werknemer tafel

Jy skep die Employee.java met al die velde van die DB met die hand (dit moet nie te lank neem) en 'n EmployeeDaO.java met metodes soos:

+findById( id ): Employee
+insert( Employee ) 
+update( Employee )
+delete( Employee ) 
+findAll():List<Employee>

En die implementering is redelik reguit vorentoe:

select * from employee where id = ?
insert into employee ( bla, bla, bla ) values ( ? , ? , ? )
update etc. etc 

As (en As) jou aansoek word te ingewikkeld kan jy die DAO implementering verander. Byvoorbeeld in die "Kies" metode jy die kode aan die ORM voorwerp wat die operasie uitvoer gebruik verander.

public Employee selectById( int id ) {
      // Commenting out the previous implementation...
      // String query = select * from employee where id = ? 
      // execute( query )  

      // Using the ORM solution

       Session session = getSession();
       Employee e = ( Employee ) session.get( Employee.clas, id );
       return e;
}

Dit is net 'n voorbeeld, in die werklike lewe jy kan laat die abstact fabriek skep die ORM DAO, maar dit is offtopic. Die punt is jy kan eenvoudig begin en deur die gebruik van die Design patrone kan jy die implementering later verander as dit nodig is.

Natuurlik as jy wil hê dat die tegnologie wat jy kan rigth weg met selfs 1 tafel begin leer.

Die keuse van die een of ander (ORM oplossing wat) afhang basies op die tegnologie wat jy gebruik. Byvoorbeeld vir JBoss of ander oopbron produkte Hibernate is groot. Dit is opensource, daar is 'n baie hulpbronne waar om te leer uit. Maar as jy die gebruik van iets wat reeds Duwstang (soos 'n krans aansoek bediener) of as die basis reeds gebou is op Duwstang jy moet bly met daardie raamwerk.

By the way, aangesien Oracle BEA gekoop, sê hulle hulle is vervang Kodo (WebLogic peresistence raamwerk) met toplink in die nou bekend as "Oracle Weblogic Aansoek Server".

Ek laat jou 'n paar hulpbronne waar jy meer inligting oor hierdie kan kry:


In hierdie "Patrone van Enterprise Application Architecture" boek, Martin Fowler, verduidelik waar om te gebruik een of ander, hier is die katalogus. Neem 'n blik op Databron Architectural Patrone teen objekrelasionele gedragspatrone:

PEAA Katalogus


DAO (Data Access Object) is deel van die kern J2EE patrone katalogus:

Die DAO patroon


Dit is 'n voorgereg handleiding vir Hibernate:

Hibernate


Die amptelike bladsy van Duwstang:

Duwstang


Ten slotte Ek "dink" die goeie dink van JPA is dat jy verskaffers afgelope tyd kan verander.

Begin eenvoudige en dan ontwikkel.

Ek hoop dit help.

Ander wenke

Dit lyk soos dit overkill vir 'n baie eenvoudige aansoek sal wees, veral as jy nie beplan om uit te brei op dit ooit. Dit blyk egter ook soos dit die moeite werd om diegene met hierdie eenvoudige aansoek te gebruik, sodat jy 'n beter begrip van hoe hulle werk vir volgende keer as jy iets wat hulle kon gebruik het kon wees.

Bedoel jy plain ou JDBC? 'N Klein projek kan 'n goeie geleentheid om af te haal een van die ORM raamwerke wees, veral as jy die tyd.

Sonder meer inligting is dit moeilik om 'n aanbeveling een of manier bied 'n ander egter.

My reël is as dit lees-alleen, ek is bereid om dit te doen in JDBC, hoewel ek verkies om 'n leë Hibernate projek met SQLQuery gebruik om voordeel te trek uit Hibernate se tipe kartering. Sodra ek hoef te doen skryf, ek gaan met Hibernate, want dit is soveel makliker om 'n paar eienskappe te stel en dan bel red as om elke kolom individueel stel. En wanneer jy moet begin optimalisering om updates op onveranderd voorwerpe te vermy, is jy weg beter daaraan toe met 'n OF / M en sy vuil nagaan. Die hantering van buitelandse sleutel verhoudings is nog 'n teken dat jy nodig het om dit een keer te karteer en gebruik dan die getters. Dieselfde logika van toepassing sal wees om Duwstang, hoewel tensy hulle iets soos HQL in die 3 jaar sedert ek gebruik dit bygevoeg het, sou Hibernate baie beter vir hierdie soort oorgang van suiwer SQL wees. Hou in gedagte dat jy nie elke voorwerp / tafel, net die een waar daar is 'n duidelike voordeel te karteer. In my ervaring, die meeste projekte wat nie gebruik 'n bestaande of / M beland bou van 'n nuwe een, wat is 'n slegte idee nie.

beste manier om te leer ORM is op 'n klein projek. Begin op hierdie projek.

As jy die hang van dit, jy sal ORM gebruik vir alles.

Daar is niks te klein vir ORM. Na jou eerste paar projekte, sal jy vind dat jy 'n ander manier nie kan werk nie. Die ORM kartering maak oor die algemeen meer sin as byna enige ander manier van werk.

Kyk na die verskillende toplink gidse hier, hulle het intro, voorbeelde, scenario's, ens

http://docs.oracle.com/cd/ E14571_01 / web.1111 / b32441 / toc.htm

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top