Download - FG Forrest, a.s. Jan Novotný iBatis SqlMaps
![Page 1: FG Forrest, a.s. Jan Novotný iBatis SqlMaps](https://reader035.vdocuments.net/reader035/viewer/2022062518/5681433e550346895dafb33a/html5/thumbnails/1.jpg)
www.fg.cz
FG Forrest, a.s.Jan Novotný
iBatis SqlMaps
![Page 2: FG Forrest, a.s. Jan Novotný iBatis SqlMaps](https://reader035.vdocuments.net/reader035/viewer/2022062518/5681433e550346895dafb33a/html5/thumbnails/2.jpg)
iBatis - ORM / DataMapper
iBatisMapová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
2www.fg.cz
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 / HibernateMapová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í
![Page 3: FG Forrest, a.s. Jan Novotný iBatis SqlMaps](https://reader035.vdocuments.net/reader035/viewer/2022062518/5681433e550346895dafb33a/html5/thumbnails/3.jpg)
Princip fungování
3www.fg.cz
podpora základních typů přístupu k DataSourceSimple – vlastní jednoduchá implementace DB poolingu
DBCP – Jakarta Database Connection Pool
JNDI – získání DataSource objektu z JNDI
podpora transakcíJDBC – connection commit() / rollback()
JTA – přístup k UserTransaction objektu via JNDI
External – iBatis neprovede commit / rollback – zajištění tohoto je na vlastní aplikaci
podpora základních typů přístupu k DataSourceSimple – vlastní jednoduchá implementace DB poolingu
DBCP – Jakarta Database Connection Pool
JNDI – získání DataSource objektu z JNDI
podpora transakcíJDBC – connection commit() / rollback()
JTA – přístup k UserTransaction objektu via JNDI
External – iBatis neprovede commit / rollback – zajištění tohoto je na vlastní aplikaci
![Page 4: FG Forrest, a.s. Jan Novotný iBatis SqlMaps](https://reader035.vdocuments.net/reader035/viewer/2022062518/5681433e550346895dafb33a/html5/thumbnails/4.jpg)
Dotazování
4www.fg.cz
![Page 5: FG Forrest, a.s. Jan Novotný iBatis SqlMaps](https://reader035.vdocuments.net/reader035/viewer/2022062518/5681433e550346895dafb33a/html5/thumbnails/5.jpg)
ResultMap – mapování výstupu na objekty
5www.fg.cz
![Page 6: FG Forrest, a.s. Jan Novotný iBatis SqlMaps](https://reader035.vdocuments.net/reader035/viewer/2022062518/5681433e550346895dafb33a/html5/thumbnails/6.jpg)
Manipulace s daty
7www.fg.cz
SqlMap.xml
Dao.java
![Page 7: FG Forrest, a.s. Jan Novotný iBatis SqlMaps](https://reader035.vdocuments.net/reader035/viewer/2022062518/5681433e550346895dafb33a/html5/thumbnails/7.jpg)
Parameter map – mapování objektů na statementy
8www.fg.cz
![Page 8: FG Forrest, a.s. Jan Novotný iBatis SqlMaps](https://reader035.vdocuments.net/reader035/viewer/2022062518/5681433e550346895dafb33a/html5/thumbnails/8.jpg)
Manipulace s daty – automaticky generované klíče
1. typ – pregenerované klíče (Oracle, …)
2. typ – postgenerované klíče (MySQL, MS SQL, …)
9www.fg.cz
![Page 9: FG Forrest, a.s. Jan Novotný iBatis SqlMaps](https://reader035.vdocuments.net/reader035/viewer/2022062518/5681433e550346895dafb33a/html5/thumbnails/9.jpg)
class System
Product
- category: Category- id: int- title: String
Category
- id: int- name: String- products: List0..* 1
10..*
Problematika 1 + N dotazů
10www.fg.cz
class Datov ý mo...
Product
«column»*PK id: INTEGER* title: VARCHAR(150)*FK idCategory: INTEGER
«FK»+ FK_Product_Category(INTEGER)
«PK»+ PK_Products(INTEGER)
Category
«column»*PK id: INTEGER* name: VARCHAR(100)
«PK»+ PK_Category(INTEGER)
+FK_Product_Category
0..* «FK»
+PK_Category
1
![Page 10: FG Forrest, a.s. Jan Novotný iBatis SqlMaps](https://reader035.vdocuments.net/reader035/viewer/2022062518/5681433e550346895dafb33a/html5/thumbnails/10.jpg)
Problematika 1 + N dotazů – inner join
11www.fg.cz
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)
vazba 1:1vazba 1:N
![Page 11: FG Forrest, a.s. Jan Novotný iBatis SqlMaps](https://reader035.vdocuments.net/reader035/viewer/2022062518/5681433e550346895dafb33a/html5/thumbnails/11.jpg)
Problematika 1 + N dotazů – cache / lazy subselect
12www.fg.cz
vazba 1:N
!!! cglib-full-2-0-rc2.jar !!!
vazba 1:1
![Page 12: FG Forrest, a.s. Jan Novotný iBatis SqlMaps](https://reader035.vdocuments.net/reader035/viewer/2022062518/5681433e550346895dafb33a/html5/thumbnails/12.jpg)
Dynamické dotazy
13www.fg.cz
![Page 13: FG Forrest, a.s. Jan Novotný iBatis SqlMaps](https://reader035.vdocuments.net/reader035/viewer/2022062518/5681433e550346895dafb33a/html5/thumbnails/13.jpg)
Cache
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
15www.fg.cz
![Page 14: FG Forrest, a.s. Jan Novotný iBatis SqlMaps](https://reader035.vdocuments.net/reader035/viewer/2022062518/5681433e550346895dafb33a/html5/thumbnails/14.jpg)
iBatis v. 3.0 – na spadnutí
Interface bindinggenerátor DAO tříd
Víceúrovňová konfiguracekonvence
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
18www.fg.cz
![Page 15: FG Forrest, a.s. Jan Novotný iBatis SqlMaps](https://reader035.vdocuments.net/reader035/viewer/2022062518/5681433e550346895dafb33a/html5/thumbnails/15.jpg)
19www.fg.cz
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)