• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    BUTHRAKAURObject Relational Mapping :: rady, tipy, triky
     
    Object Relational Mapping

    [ Board.doc ]

    Diskuze o objektove relacnim mapovani.
    Ptejte se, treba budem vedet .)

    [ Board.quicklinks ]

    Wiki - ORM na wikipedii
    Castle ActiveRecord
    NHibernate Query Analyzer
    NHibernate Query Generator
     
     

    No flames | Check homepage

     
    rozbalit záhlaví
    JENIIK
    JENIIK --- ---
    BUTHRAKAUR: no já teda nechci zase vypadat jako zpátečník, ale v momentě, kdy tě začne zajímat výkon aplikace, pak na všechny objekty zapomeneš, protože ono se v tom hezky píše a všechno vypadá elegantně, problém je ale v tom, že někdy musí elegance stranou a jde se po výkonu.

    Jenže to se někdy těžko vysvětluje i lidem, pro něž je třetí normální forma dogmatem a tak, to si prostě musí každý ozkoušet sám.
    LITTLELI
    LITTLELI --- ---
    BUTHRAKAUR: jo to me taky sere :( nicmene teda ted nacpali do db4o linq - coz pro tebe jako .netistu musi byt pomerne zajimave.
    BUTHRAKAUR
    BUTHRAKAUR --- ---
    SHAGA: nj, pro mne je zlo relacni model a ORM je nastroj na zmirneni relacni bolesti :)) a bohuzel investice objektovejch DB nejsou dostatecny, aby se ODBMS nejak vyraznejs prosadily ;(
    SHAGA
    SHAGA --- ---
    ORM je zlo. Cokoliv, co se snaží maskovat fakt, že relační a objektový model jsou dvě různé věci, skončí tak, že buď se spousta černé automagie po chvíli zhroutí a začne generovat prapodivné chyby apod., nebo tak, že se přiohýbá db modelování objektovému, což vede k - slušně řečeno - suboptimální výkonnosti. iBatis a spring JDBC abstrakce jsou imho ideální, schovávaj JDBC prudu s checkovanejma výjimkama a resource managementem a přitom nechávají člověku v rukou plnou kontrolu.
    LITTLELI
    LITTLELI --- ---
    no tomu rozumim, jenze ja mam problem v tom, ze neuridim hibernate a tu jeho temnou magii uvnitr - a ze to je temna sila o tom doufam, nikdo nepochybuje :)
    BUTHRAKAUR
    BUTHRAKAUR --- ---
    LITTLELI: hmm.. to mi teda prijde takovy podivne magicky a nepruhledny :) teda aspon to generovani SQL ciste podle signatury metody - nejak jsou mi blizsi ty atributy/anotace, jako to ma treba Castle.ActiveRecord... skoro mi teda ale prijde, ze se ten iBatis s (N)Hibernate temahle poslednima/planovanejma zmenama zacinaji celkem hodne priblizovat.
    mne to primitivni CRUD SQL nebavi, takze zustanu u NH, ale ceka mne ted prepsani jedny aplikace nad takovou celkem brutalni oldskull DB strukturou, tak uvidim, jestli se nakonec nebudu muset k iBatis taky uchylit...
    LITTLELI
    LITTLELI --- ---
    aaaah, ad dynamic sql. jo to je ono. je to jenom takovej templating s parametry.
    LITTLELI
    LITTLELI --- ---
    BUTHRAKAUR: melo by to byt tohle. kdy to bude nevim, to tam nikde nepisou :) nicmene pro to pak nepotrebujes explicitni sql. jinak v soucasnosti ano, a to mi zase tolik nevadi.. stejne nekde potrebuju testovat model, pripravit fixtures, takze mam vsecko podchycene.
    BUTHRAKAUR
    BUTHRAKAUR --- ---
    LITTLELI: ted se asi trochu ztracim :) dynamic sql myslis tohle? to je akorat trochu rozsirena syntaxe tech vygenerovanejch/psanejch dotazu, jestli to dobre chapu = porad musis tomu frameworku dodat klasicky SQL dotazy i pro primitivne mapovany operace.

    a pod tim "implicitni resp. konvenci rizene dotazy podle nazvu dao metod" si muzu predstavit co presne? nejaky rozsireny mapovani pomoci atributu?
    LITTLELI
    LITTLELI --- ---
    BUTHRAKAUR: aha a neresi to ta moznost kterou nazyvaji dynamic sql? ja tu prave mam ted aplikaci, ktera je vyvijena z datoveho modelu a nejsem si uplne jistej, jestil by mi (n)hibernate byl po ruce. pokud vim do v3 planujou nejaky zmeny jako implicitni resp. konvenci rizene dotazy podle nazvu dao metod.
    BUTHRAKAUR
    BUTHRAKAUR --- ---
    LITTLELI: na iBatis.Net sem koukal a napsal si v nem najekou primitivni testovaci aplikaci... na praci s nejakejma legacy DB to driv bylo asi jediny schudny reseni, pze NHibernate neumel navazat na CRUD custom SQL nebo SP, ale pokud vim, tak od verze 1.2 NH umi custom SQL. takze pokud to dobre chapu (v praxi jsem to jeste nepouzil), tak by se tim mela stirat hlavni nevyhoda NH vs iBatis.
    na novy nebo jednoduse mapovatelny tridy muze pak clovek pouzivat ActiveRecord a na slozitejsi/legacy struktury si muze namapovat vlastni SQL...

    na iBatis by mi vadila hlavne ta nutnost psat (nebo generovat) kompletne vsechny SQL i v pripade, ze se jedna o trivialni mapovani. nebo ma iBatis nejaky novoty v tomhle ohledu?
    LITTLELI
    LITTLELI --- ---
    co trebas iBatis / iBatis.NET? nekdo se zkusenostmi? mne se to zatim libi o poznani vic plne ostre ORM frameworky.
    BUTHRAKAUR
    BUTHRAKAUR --- ---
    aby to tu tak nezkomiralo ;)

    Migrator.Net - takova sikovna zalezitost pro verzovani DB zmen pro .Net. zacal jsem to asi pred mesicem pouzivat zkusebne na jednom projektu a zatim velka spokojenost..
    http://code.google.com/p/migratordotnet/
    BUTHRAKAUR
    BUTHRAKAUR --- ---
    screencaast k Castle.ActiveRecord
    http://hammett.castleproject.org/?p=213
    GARFIELD
    GARFIELD --- ---
    // reklama na klub

    novy klub o webovych aplikacich v JAVE
    [ JAVA a webove aplikace - struts, seam, ... ]

    // nezlobte se za spam
    JSEVCIK
    JSEVCIK --- ---
    Jo a este celkom slusny template pre MyGeneration na generovanie C# business objektov+XML k aktualnej verzii NHibernate:
    http://www.mygenerationsoftware.com/TemplateLibrary/Article/?guid=9253c1a1-299a-46fa-8869-c39ea228e58c
    JSEVCIK
    JSEVCIK --- ---
    par linkov k NHibernate, mozno by to na nastenke niekomu pomohlo pri zaciatku s NHibernate rovnako ako mne:
    --
    Celkom fajn mini-tutorial k NHibernate, konci praktickym prikladom implementacie:
    http://devlicio.us/blogs/alan_northam/archive/2007/05/19/getting-started-with-nhibernate-part-i.aspx

    Tiez zaujimavy tutorial, IMHO myslim, ze koncepcne lepsie spracovany, skoda ze k zastaralejsej verzii NHibernate:
    http://www.theserverside.net/tt/articles/showarticle.tss?id=NHibernate
    http://www.theserverside.net/tt/articles/showarticle.tss?id=NHibernateP2

    NHibernate Best Practices:
    http://www.codeproject.com/aspnet/NHibernateBestPractices.asp

    Kniha NHibernate in Action od vyvojarov NHibernate, uvodna kapitola zdarma:
    http://www.manning.com/kuate/
    BUTHRAKAUR
    BUTHRAKAUR --- ---
    // se mi to kombo Castle+NHQG zacina libit :))
    IoC.Resolve<IProductRepository>().FindAll(
                        Where.Product.Name.Like("A", MatchMode.Start) &&
                        Where.Product.Weight.Ge(100))
    
    VIRUS31
    VIRUS31 --- ---
    JSEVCIK: pak napis co ti profiler rekl, docela by me to zajimalo
    BUTHRAKAUR: hrad vyzkousim, ty xmlka jsou docela nuda a da se v nich nasekat dost chyb.
    JSEVCIK
    JSEVCIK --- ---
    BUTHRAKAUR:
    jo, Castle.ActiveRecord vyzera fajn, akurat ze moj zakaznik to ma cele postavene nad tymi XMLkami a chce aby sa v tom takto pokracovalo..
    ten NHibernate Query Generator vyzera fajn, dik
    BUTHRAKAUR
    BUTHRAKAUR --- ---
    misto psani XMLek k tridam doporucuju zkusit ten Castle.ActiveRecord - staci pak popsat tridy a properties atributama. a dalsi peknej nastroj, kterej jsem nedavno zacal pouzivat je NHibernate Query Generator - takova pomucka pro strongly typed dotazovani. clovek pak muze pouzivat takovy krasny veci jako treba Where.User.Address.City == "Ostrava" a pripadne si i ty dotazy rozsirit o svoje vlastni (je to partial class)... podporuje to i razeni a projekce.
    Kliknutím sem můžete změnit nastavení reklam