• ú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í
    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.
    JSEVCIK
    JSEVCIK --- ---
    VIRUS31: jo ja idem teraz vyskusat ako to robi JOINy atd, kedze dufam ze to nebude robit tupo 'select a,b,c from orders' a potom 'select x,y,z from customers where customerid=1' atd..proste mi ide o to, aby to rozumne pracovalo s DB...idem si pustit profiler a uvidim :0
    coho sa ale trosku bojim je performance kvoli tej reflexii..
    VIRUS31
    VIRUS31 --- ---
    jo a na nasazeni to neni zas tak slozity. par xmlek a behem odpolka uz to vali.
    VIRUS31
    VIRUS31 --- ---
    JSEVCIK: jj. mi ho pouzivali (uz tamnepracuju) v praci a mam ho ted aj doma pro vlastni veci. pouzivam vicemene zakladni moznosti. co jsem odposlechnul v praci, tak na slozitejsi dotazy jsme ho nemeli pouzivat. duvod presne neznam. meli jsme oracli db.
    JSEVCIK
    JSEVCIK --- ---
    pouziva tu niekto NHibernate ? nejake prakticke skusenosti - vyhody/nevyhody (performance, flexibilita, zlozitejsie query, bugy ) ?
    BUTHRAKAUR
    BUTHRAKAUR --- ---
    //v ankete sem se prihlasil k NH, ale cisty NH prakticky nepouzivam - pouzivam Castle.ActiveRecord a par dalsich sikovnosti na dotazovani (NHibernate Query Generator) apod...
    VIRUS31
    VIRUS31 --- ---
    zahlavi vyrobeno, prava jsou k editaci homepage a ankety volna


    [X] :: Zneuzivame nastroj ankety. Pouzivas(ls) nejake orm? Jake? Pokud ti v ankete chybi, dopis ho.. at mame prehled kdo s cim dela :]

    EL_ASSESSINO
    EL_ASSESSINO --- ---
    doplneni...
    prvni vec: NamedQuery klidne sezere v parametru procento, ale situace je kapku slozitejsi viz http://www.jroller.com/cmaki/entry/jpql_s_crazy_escape_sequence
    druha vec: moje neznalost, case-sensitivity je "feature" derby
    EL_ASSESSINO
    EL_ASSESSINO --- ---
    ted jsem zrovna narazil na zvlastni vec, potreboval jsem udelat klasicke vyhledavani v JPQL...driver toplink, databaze testovaci derby...ze do NamedQuery tezko nacpu pres parametry wildcards jsem tusil, ale jake bylo me prekvapeni, ze je LIKE case sensitive...
    takze jsem skoncil s necim takovym:

    SELECT u FROM User u WHERE LOCATE(:fName, LOWER(u.firstName)) > 0 AND LOCATE(:lName, LOWER(u.lastName)) > 0

    ze se mi to ani trochu nelibi je asi jasne...nedelal nekdo neco podobneho? je to derbynou nebo driverem? (fakt ted uz nemam cas ani chut to zkouset)
    VIRUS31
    VIRUS31 --- ---
    ale podle ankety to muzem rozsirit.
    Kliknutím sem můžete změnit nastavení reklam