150 likes | 328 Views
FG Forrest, a.s. Jan Novotný iBatis SqlMaps. iBatis - ORM / DataMapper. JDBC 3.0 Žádné mapování Klady maximální výkon maximální kontrola / flexibilita jednoduchost rychlý setup jednoduché navázání na existující DB stačí znalost SQL Zápory minimální produktivita
E N D
iBatis - ORM / DataMapper • JDBC 3.0 • Žádné mapování • Klady • maximální výkon • maximální kontrola / flexibilita • jednoduchost • rychlý setup • jednoduché navázání na existující DB • stačí znalost SQL • Zápory • minimální produktivita • nutnost překopírovávání parametrů do Statementu • nutnost překopírovávání dat z ResultSetu do POJO • nutnost správy zdrojů • závisí na použité DB • žádná cache • velmi problémová údržba • JPA /Hibernate • Mapování objektů na tabulky • Klady • zakrytí způsobu práce s relačními daty (není přímo nutné ovládat SQL) • vysoká produktivita • přenositelnost • velmi efektivní generování relačního modelu z OO • efektivní cache • relativně jednoduchá údržba (refactoring) • Zápory • ztráta přímé kontroly • velmi složitý • nutná znalost HQL • problematické použití při komplikovaných dotazech • problémy s dávkovým zpracováním • problematické navázání na existující DB • díky komplexitě přináší řadu náročných problémů k řešení www.fg.cz • iBatis • Mapování objektů na SQL • Klady • minimalizace rutinní práce s JDBC • kontrola / flexibilita • jednoduchost • rychlý setup • odpadá správa zdrojů • cachování • jednoduché navázání na existující DB • stačí znalost SQL • Zápory • zůstává stále nějaká rutinní práce • závisí na použité DB • náročnější údržba
Princip fungování • podpora základních typů přístupu k DataSource • Simple – vlastní jednoduchá implementace DB poolingu • DBCP – Jakarta DatabaseConnection Pool • JNDI – získání DataSource objektu z JNDI • podpora transakcí • JDBC – connectioncommit() / rollback() • JTA – přístup k UserTransaction objektu via JNDI • External – iBatis neprovede commit / rollback – zajištění tohoto je na vlastní aplikaci www.fg.cz
Dotazování www.fg.cz
ResultMap – mapování výstupu na objekty www.fg.cz
Manipulace s daty SqlMap.xml Dao.java www.fg.cz
Manipulace s daty – automaticky generované klíče www.fg.cz 1. typ – pregenerované klíče (Oracle, …) 2. typ – postgenerované klíče (MySQL, MS SQL, …)
Problematika 1 + N dotazů www.fg.cz
Problematika 1 + N dotazů – inner join vazba 1:1 vazba 1:N • obvykle nejlepší z řešení • pokud víme, že budeme u každého produktu přistupovat ke kategorii • sloupce pro join jsou oindexované • je velké množství kategorií respektive produktů (nevyplatí se cachovat kategorie podle id) www.fg.cz
Problematika 1 + N dotazů – cache / lazy subselect vazba 1:1 vazba 1:N !!! cglib-full-2-0-rc2.jar !!! www.fg.cz
Dynamické dotazy www.fg.cz
Cache www.fg.cz ReadOnly vs. Read/Write = pro všechny uživatele vs. pro session Read/Write + serializable = vyšší výkon, protože objekty jsou cachované pro všechny uživatele, ale konkrétní instance, se kterými pracujeme jsou deserializované kopie
iBatis v. 3.0 – na spadnutí www.fg.cz • Interface binding • generátor DAO tříd • Víceúrovňová konfigurace • konvence • anotace (překrývá konvenci) • XML (překrývá anotace i konvenci) • Java API (překrývá vše) • Zjednodušená konfigurace cache • Možnost tvorby dynamických SQL dotazů Java kódem • Kdy? Dle dostupných informací 2Q 2009
Užitečné odkazy • http://ibatis.apache.org/ (iBatis homepage) • http://ibatis.apache.org/ibator.html (iBator) • http://blog.novoj.net (Myšlenky dne Otce Fura) • http://www.fg.cz (Web společnosti FG Forrest - články) Děkuji za pozornost www.fg.cz