Vra

Ek weet dit is 'n subjektiewe vraag, maar hoekom nie Hibernate blyk te wees ontwerp vir korte duur sessies? Algemeen in my apps Ek skep DAOs om abstrakte my data laag, maar sedert ek nie kan voorspel hoe die entiteit voorwerpe gaan word sommige van sy versamelings is lui gelaai, of moet ek sê nie laai sodra die sessie gesluit word.

Hoekom het hulle nie ontwerp sodat dit sou outomaties weer oop die sessie, of het sessies altyd oop bly?

Was dit nuttig?

Oplossing

becuase as jy beweeg uit jou transaksie grens jy die databasis nie weer kan tref sonder begin van 'n nuwe transaksie. Na 'n lang loop transaksies 'just in case "is 'n slegte ding (tm).

Ek dink jy wil lui vrag voorwerp van jou siening - 'n blik hier vir 'n paar opsies. Ek verkies om presies te definieer hoeveel van die kaart voorwerp gaan teruggestuur word deur my sessie fasade metodes. Ek vind dit maak dit makliker om eenheid toets en om prestasie te toets my besigheid vlak.

Ander wenke

Ek het op 'n desktop app wat EJB en Hibernate gebruik. Ons moes lazy=false oral stel, want as die voorwerpe te kry serialized, hulle hul vermoë verloor om gehaal uit die agterkant. Dit is net hoe dit gaan, ongelukkig.

As jy bekommerd is oor prestasie, jy kan caching gebruik op die agterkant sodat jou nie-lui gaan haal is nie so pynlik.

Jy is op soek na die OpenSessionInView patroon, wat in wese 'n konseptuele filter (en soms geïmplementeer as 'n Servlet filter) wat aandui wanneer 'n sessie moet deursigtig heropen. Verskeie raamwerke te implementeer hierdie so dit automagically hanteer dit.

Ek skryf 'n lessenaar toepassing so die gebruik van 'n filter is nie van toepassing.

Connections is 'n skaars hulpbron wat aangespreek moet so gou herwin as jy klaar is met behulp van hulle. As jy ook gebruik verbinding pooling, kry 'n ander een wanneer jy dit nodig het moet vinnig wees. Dit is die argitektuur wat jy hoef te gebruik om webtuistes skaal maak -. Selfs al is jy 'n desktop app, die gebruik daarvan-gevalle waarskynlik konsentreer op skaalbare webwerwe

As jy kyk na MS ADO.NET, jy sal 'n soortgelyke fokus sien op die behoud van verbindings oop vir 'n kort tyd -. Hulle het 'n hele lyn af model vir die opdatering van data ontkoppel en dan aansoek doen om 'n databasis wanneer jy gereed is

Hibernate is ontwerp as 'n manier om voorwerpe te relasionele databasis tabelle te karteer. Dit accomplishes dit werk baie goed. Maar, kan dit nie almal tevrede te stel al die tyd. Ek dink daar is 'n paar kompleksiteit in leer hoe inisialisering werke nie, maar sodra jy die hang van dit maak dit sin. Ek weet nie of dit was noodwendig "ontwerp" om spesifiek te terg jy, dis net die manier waarop dit gebeur het.

As dit gaan mettertyd heropen sessies in 'n nie-webapps Ek dink die kompleksiteit van die raamwerk leer sou ver op teen die voordele.

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