Post on 11-Jan-2016
description
transcript
www.fg.cz
FG Forrest, a.s.Jan Novotný
iBatis SqlMaps
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í
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
Dotazování
4www.fg.cz
ResultMap – mapování výstupu na objekty
5www.fg.cz
Manipulace s daty
7www.fg.cz
SqlMap.xml
Dao.java
Parameter map – mapování objektů na statementy
8www.fg.cz
Manipulace s daty – automaticky generované klíče
1. typ – pregenerované klíče (Oracle, …)
2. typ – postgenerované klíče (MySQL, MS SQL, …)
9www.fg.cz
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
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
Problematika 1 + N dotazů – cache / lazy subselect
12www.fg.cz
vazba 1:N
!!! cglib-full-2-0-rc2.jar !!!
vazba 1:1
Dynamické dotazy
13www.fg.cz
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
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
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)