+ All Categories
Home > Documents > FG Forrest, a.s. Jan Novotný iBatis SqlMaps

FG Forrest, a.s. Jan Novotný iBatis SqlMaps

Date post: 11-Jan-2016
Category:
Upload: nuala
View: 31 times
Download: 0 times
Share this document with a friend
Description:
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 - PowerPoint PPT Presentation
15
www.fg.cz FG Forrest, a.s. Jan Novotný iBatis SqlMaps
Transcript
Page 1: FG Forrest, a.s. Jan Novotný iBatis SqlMaps

www.fg.cz

FG Forrest, a.s.Jan Novotný

iBatis SqlMaps

Page 2: 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í

Page 3: FG Forrest, a.s. Jan Novotný iBatis SqlMaps

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

Dotazování

4www.fg.cz

Page 5: FG Forrest, a.s. Jan Novotný iBatis SqlMaps

ResultMap – mapování výstupu na objekty

5www.fg.cz

Page 6: FG Forrest, a.s. Jan Novotný iBatis SqlMaps

Manipulace s daty

7www.fg.cz

SqlMap.xml

Dao.java

Page 7: FG Forrest, a.s. Jan Novotný iBatis SqlMaps

Parameter map – mapování objektů na statementy

8www.fg.cz

Page 8: FG Forrest, a.s. Jan Novotný iBatis SqlMaps

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

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

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

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

Dynamické dotazy

13www.fg.cz

Page 13: FG Forrest, a.s. Jan Novotný iBatis SqlMaps

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

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

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)


Recommended