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

Související články:

  1. Podcast: Záznam z přednášky Automatické testování v praxi
  2. Podcast: Záznam přednášky Pokročilé techniky automatického testování v praxi
  3. Pozvánka na přednášku na UHK
    iBatis SqlMaps
  4. iBatis SqlMaps – tak trochu opomíjený ORM
  5. Podcast: Basics of Unit Testing with Spring
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í. (3 hlasů, průměrně: 5.00 z 5)
Loading ... Loading ...

9 Responses to “Podcast: Záznam z přednášky iBatis SqlMaps”

  1. Pavel Stastny says:

    Dobra prace ;-)

    Diky.

    -happy

  2. Tomáš Homola says:

    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 says:

    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 says:

    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 says:

    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 says:

    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 says:

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

    Pěkná přednáška.

  8. Otec Fura says:

    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 says:

    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 says:

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

  11. Tomáš Procházka says:

    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 says:

    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 says:

    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.

Leave a Reply