Vra

Dit lyk vir my dat die bekendstelling van 'n ORM instrument is veronderstel om jou argitektuur skoner te maak, maar vir doeltreffendheid Ek het ontdek dat ek omleiding dit en iterating oor 'n JDBC resultatenset by geleentheid. Dit lei tot 'n ongekoördineerde warboel van artefakte in plaas van 'n skoner argitektuur.

Is dit omdat ek die toepassing van die instrument in 'n ongeldige konteks, of is dit dieper as dit?

Wanneer kan / moet jy gaan heel hog met die ORM benadering?

Enige insig sal waardeer word.


'n bietjie agtergrond:

In my omgewing Ek het sowat 50 kliënt rekenaars en 1 redelik kragtige SQL Server.

Ek het 'n lessenaar toepassing waarin al 50 kliënte toegang tot die data te alle tye.

Die projek se Data Model gegaan deur 'n aantal van reorganisasie om verskeie redes, insluitend duidelikheid, doeltreffendheid, ens.

My geskiedenis Data Model se

  1. JDBC oproepe direk
  2. DAO + POJO sonder verhoudings tussen Pojos (basies wikkel die JDBC).
  3. Added Betrekkinge tussen POJOs implementering Lazy laai, maar net die wegsteek van die inter-DAO oproepe
  4. gespring op die Hibernate trein na die sien hoe "eenvoudige" dit toegang tot die inligting het (dit het onder POJO verhoudings triviale) en omdat dit die aantal ronde reise na die databasis kan verminder wanneer daar gewerk word met baie verwante entiteite.
  5. Aangesien dit 'n lessenaar toepassing hou sessies oop langtermyn was 'n nagmerrie, sodat dit uiteindelik veroorsaak dat 'n hele klomp van die probleme
  6. tree terug om 'n gedeeltelike DAO / Hibernate benadering wat dit moontlik maak om my te maak direkte JDBC roep agter die DAO gordyn terwyl op dieselfde tyd met behulp van Hibernate.
Was dit nuttig?

Oplossing

Hibernate maak meer sin as jou aansoek werk op voorwerp grafieke , wat volgehou in die RDBMS. In plaas daarvan, as u aansoek logika werk op 'n 2-D matriks van data, haal dié via direkte JDBC werk beter. Hoewel Hibernate op die top van JDBC geskrywe is dit vermoëns wat nie-triviale te implementeer in JDBC kan wees. Bv:

  1. Sê die gebruiker 'n ry beskou in die UI en verander 'n paar van die waardes en jy wil 'n update navraag vuur vir slegs daardie kolomme wat wel verander.
  2. Om vermy om in dooie wat jy nodig het om 'n globale orde vir SQLs in 'n transaksie in stand te hou. Kry dit reg JDBC kan nie maklik wees nie
  3. Maklik opstel optimisties locking. Wanneer jy JDBC gebruik, moet jy onthou om dit te hê in elke update navraag.
  4. Batch updates, lui materialisering van versamelings ens kan ook nie-triviale te implementeer in JDBC wees.

(Ek sê " kan nie-triviale", omdat dit natuurlik gedoen kan word - en jy kan 'n super hacker wees:)

Hibernate kan jy brand jou eie SQL navrae ook, in die geval wat jy nodig het om te.

Hoop dit help jou om te besluit.

PS:. Hou die Sessie oop op 'n remote desktop kliënt en hardloop in die moeilikheid is regtig nie Hibernate se probleem - jy sal loop in die dieselfde probleem as jy die konneksie na die DB oop vir 'n lang hou

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