Podcast: Záznam z přednášky iBatis SqlMaps

Tento týden proběhla na Univerzitě v Hradci Králové přednáška na téma iBatis SqlMaps. V přednášce jsem se snažil projít všemi základními funkcionalitami iBatisu a porovnat jej krátce s několika dalšími přístupy k implementaci datové vrstvy (plain JDBC, JPA / Hibernate) a podívat se co nového nás čeká v nové verzi iBatis číslo 3.

Kvůli omezenému rozsahu (1,5 hodiny) nemohlo dojít na trošku sofistikovanější záležitosti jako je použití diskrimintárů a resultObjectFactory, integrace se Springem, dávkovému zpracování dotazů do databáze a použití iBatoru. Pokud byste měl kdokoliv nějaké otázky týkající se těchto oblastí, neváhejte je napsat do komentářů k tomuto postu, a já se je pokusím zodpovědět a popřípadě publikovat i další příklady.

Pozn.: po poslechu se mi zdá, že kvalita záznamu je výborná … jen se mi ke konci už trochu pletl jazyk, takže při jedné odpovědi na dotaz v závěru přednášky jsem odpověď uvedl tím, že Hibernate umí využít jak stránkování databáze, tak JDBC způsob pro skip záznamů … samozřejmě jsem mluvil o iBatisu. Doufám, že se Vám bude přednáška líbit.

Použitá hudba: Minstrel Spirit – Enter The Woods, Gabriella (http://magnatune.com) publikováno pod Creative Commons License

MP3 Podcast Podcast [84:39] 22,4 MB

Creative Commons - Some Rights Reserved

Slidy prezentace Slidy prezentace ve formátu MS PowerPoint

Licence: Creative Commons

Podělte se s ostatními:
  • Digg
  • del.icio.us
  • Technorati
  • Diigo
  • DZone
  • FriendFeed
  • Google Bookmarks
  • LinkedIn
  • Reddit
  • RSS
  • StumbleUpon
  • Twitter
Ohodnoťte článek:
Takovéhle články už radši ne!Nic nového pod sluncem.Průměr - obsahuje zajímavé střípky informací.Hodnotný článek - lecos nového jsem se dozvěděl.Skvělý článek - informace se mi dost hodí. (2 hlasů, průměrně: 5.00 z 5)
Loading ... Loading ...

11 reakcí to “Podcast: Záznam z přednášky iBatis SqlMaps”

  1. Pavel Stastny:

    Dobra prace ;-)

    Diky.

    -happy

  2. Tomáš Homola:

    Dobrá přednáška… bude někdy nějaký pokračování? třeba rozšíření informací co tam právě nebyly řečeni integrace se springem atd? Nebo přednáška věnovaná Hibernate?

  3. Otec Fura:

    No o Hibernatu se asi neodvážím moc hovořit – v této oblasti bych řekl nemám dost znalostí ani zkušeností. Radši přednáším o věcech, ve kterých mám alespoň 1-2 roky praxi, abych mohl říct i o praktických zkušenostech a dopadech.

    Pokračování neplánuji – možná až vyjde iBatis 3, mohl bych nějakým způsobem provést update, protože tento release vypadá opravdu zajímavě.

    Pokud byste měl nějaký konkrétní dotaz k těm věcem co jsem vynechal, stačí napsat a já se pokusím odpovědět.

  4. Petr:

    Super přednáška. Potvrzuji, že učící křivka se počítá na hodiny. Používal jsem iBatis ve spojení se springem, který také řídil transakce a nezaznamenal jsem jediný problém. Jako náhrada JdbcTemplate je ideální.

  5. Jety:

    Ahoj Honzo, díky za přednášku. Mám dotaz, jakou má výhodu syntaxe $parameter$ oproti #parameter#. Jinými slovy zda se dá obecně říct “Vždy používejte syntaxy #parameter# a nikdy $parameter$, abyste neriskovali SQL injection?”.

    Btw. Ten powerpoint je příjemně přehledný, tuším, že to dalo dost práce.
    Jety

  6. Otec Fura:

    No ten #parameter# je vždy bezpečný – jenomže ho nemůžeš použít na všech místech v tom SQL – pokud potřebuješ napsat dynamickou ORDER BY klauzuli, tak se bez $parameter$ neobejdeš. Skutečně si to stačí v hlavě představit, jak to bude přeložené do toho JDBC zápisu. Tzn. k výše uvedenému zápisu – není možné zapsat SQL:

    select * from TABULKA order by ? ?

    To by JDBC zařvalo – to akceptuje parametry jen skutečně na místech, které jsou pro parametry platné (tzn. např where podmínky “where sloupec = ?” apod.).

    Pro ty dolarové zápisy je teda dobré to dělat tak, že pokud ti jde parametr z url, tak si při přípravě vstupů do mapované query iBatisu uděláš:

    if (“asc”.equalsIgnoreCase(urlParameter)) {
    iBAtisParameters.put(“type”, “asc”));
    } else {
    iBAtisParameters.put(“type”, “desc”));
    }

    Je to sice trošku víc psaní, ale jednodušeji to podle mého nejde, aniž by ses nevystavil SQL Injection. Na druhou stranu, tohle by asi iBatis nemohl dost dobře suplovat.

  7. lzap:

    Ty ajaxový SNAPSHOTY jsou odporný, jak to vypnout? Furt se mi to tady objevuje.

    Pěkná přednáška.

  8. Otec Fura:

    Vypnul jsem je. Kdysi se mi zdály jako dobrej nápad, ale už se mi taky moc nepozdávají – tvůj komentář byla poslední kapka ;-)

  9. benzin:

    P.S.: Jeste k tomu ## a $$ je dobre podotknout ze nejenom SQL Injection to resi. Resi to taky kompilaci SQL dotazu a delku logu. Kdyz totiz rvete hodnoty primo do SQL musi serve pokazde znovu kompilovat dotaz a pokazde si o nem udela zapis do logu, kdezto kdyz pouzijete ?, tak ke kompilaci dojde (v idealnim pripade) jenom jednou a i logu se tim hodne ulevi.

  10. Ex1:

    Dobře udělané a informativní. Díky.

  11. Tomáš Procházka:

    Na Slidu 18 je v Mapperu toto:

    Nepodařilo se mi nikde najít zmíňku o tom, že je toto podporováno (ani ve verzi 3 beta), dokonce ani v doctypu parameters není. I když bylo by to krásně a je to to poslední, co mi v iBatisu chybí, abych ho mohl začít používat.

    Na podobné téma jsem se ptal v konferenci:
    http://www.mail-archive.com/user-java@ibatis.apache.org/msg14807.html

  12. Tomáš Procházka:

    Napsal jsem na to Issue:
    http://issues.apache.org/jira/browse/IBATIS-669

    Dále není pravda, že anotace jsou plnohodnotné XML, rozhodně nejsou.

  13. Otec Fura:

    Ahoj Tomáši, tahle přednáška vznikla ještě v době, kdy o iBatisu 3 toho ještě moc známo nebylo. Vycházel jsem především z Whitepaperu, který byl na téma iBatis 3 zpracován. Na blogu mám teď dva daleko aktuálnější články o třetí verzi iBatisu:

    http://blog.novoj.net/2009/08/16/ibatis-30-preview-cast-prvni/
    http://blog.novoj.net/2009/08/23/ibatis-30-preview-cast-druha/

    V XML konfiguraci pak zcela běžně používají pojmenovaných parametrů víc. Pročítal jsem mail thread a vidím problémy s anotacemi. V Javě se v reflexi bohužel nedají číst názvy parametrů metody – tj. iBatis nemá z čeho zjistit názvy parametrů, které jsou následně v anotaci používány. Proto zatím umožňují pouze jeden parametr. Jediné dvě možné řešení je tvorba extra anotace, nebo používání indexů – a to ani jedno není moc komfortní. Dalším možností by bylo použít knihovnu Paranamer (http://paranamer.codehaus.org/) od Codehausu, ale ani ta není 100% – má například problémy s interfacy. Uvidíme, jak si s issue poradí Clinton Begin.

    Co se týká toho, že anotace plnohodnotně pokrývají možnosti XML – vycházím z toho, co o tom tvrdí autoři. Pokud to není plnohodnotné, mělo by se to tomu blížit.

    Nicméně máš pravdu, co se týká 3tí verze, mám zatím limitované vědomosti.

Nechte zde svůj komentář

Opište prosím text z obrázku: