Dátová vrstva
This presentation is the property of its rightful owner.
Sponsored Links
1 / 45

Dátová vrstva PowerPoint PPT Presentation


  • 73 Views
  • Uploaded on
  • Presentation posted in: General

Dátová vrstva. Architektúra IS na báze vrstiev. aplikačná vrstva. dátová vrstva. prezentačná vrstva. J2EE kontajner. JSP Servlet XSLT. EJB (session message driven ) servisné Java triedy. WEB browser tenký tučný Java klient. DAO ORM. RDBMS ODBMS XML s ú bory. dátový zdroj.

Download Presentation

Dátová vrstva

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


D tov vrstva

Dátová vrstva


Architekt ra is na b ze vrstiev

Architektúra IS na báze vrstiev

aplikačná vrstva

dátová vrstva

prezentačná vrstva

J2EE kontajner

JSP

Servlet

XSLT

EJB

(session

message driven)

servisné Java triedy

WEB

browser

tenký

tučný

Java klient

DAO

ORM

RDBMS

ODBMS

XML súbory

dátový zdroj

prepojenie

na dátový zdroj


D tov vrstva

Dátová vrstva

  • tradičný dátový zdroj – RDBMS

    • objektový a relačný svet štruktúrujú dáta rôznym spôsobom

  • problémy na riešenie

    • mapovanie štruktúr (štrukturálne vzory)

      • identifikovanie entít

      • mapovanie asociácií, dedičnosti, ...

    • pripojenie aplikačnej vrstvy k dátovej vrstve (vzory dátového zdroja)

    • správanie (vzory správania)

      • riešenie konfliktov pri zápise objektov

      • postupné donačítavanie asociovaných objektov


D tov vrstva

Štrukturálne vzory


Idetity field i dentita objektov

Idetity Field – identita objektov

  • uloženie databázového ID pola (PK) ako atribút objektu

  • požiadavky na Idetity Field

    • jedinečnosť

    • nemennosť

  • treba zvážiť nasledovné aspekty

    • umelý vs. prirodzený (rodné číslo, SSN)

    • jednoduchý vs. zložený (orderID + seqNum)

    • dátový typ – efektivita => long

    • table-unique vs. database-unique key

      • inheritance unique key


Idetity field i dentita objektov1

Idetity Field – identita objektov

  • tvorba nasledujúcich hodnôt ID

    • auto generované ID pole databázou

      • problém so spojenými objektami, transakciami a ohraničeniami

    • database counter (Oracle Sequence)

      • neštandardné riešenie

    • GUID (Globally Unique IDentifier)

      • veľký reťazec => výkonnostný problém

    • key table


Foreign key mapping n 1

Foreign Key Mapping – N:1

  • mapovanie asociácie medzi objektami na referenciu cudzím kľúčom medzi tabuľkami


Foreign key mapping n 11

Foreign Key Mapping – N:1


Foreign key mapping 1 n

Foreign Key Mapping – 1:N


Foreign key mapping 1 n1

Foreign Key Mapping – 1:N


Association table mapping m n

Association Table Mapping – M:N

  • mapovanie asociácie M:N pomocou väzobnej tabuľky

  • väzobná tabuľka väčšinou nemá in-memory reprezentáciu => nemá ID


Association table mapping m n1

Association Table Mapping – M:N

  • väzobná tabuľka väčšinou nemá in-memory reprezentáciu => nemá ID

  • použitie

    • M : N asociácie

    • asociácie medzi tabuľkami, ktorým nemôžeme pridať stĺpec


Asoci cie k n kolekcie

Asociácie k N (kolekcie)

  • komplikácie pri update

    • delete a insert

    • spätný pointer (referencia)

    • diff kolekcie

  • mazanie z kolekcie ?

    • vymazanie objektu

    • zrušenie asociácie na objekt, resp. premiestnenie do inej kolekcie


Embedded value

Embedded Value

  • mapuje závislý objekt do tabuľky vlastníka

  • použitie

    • asociácie s kardinalitou 1 až malý fixný počet

    • Value Objects

    • objekty ako pri Serialized LOB z výhodou použitia SQL


Serialized lob

Serialized LOB

  • uloženie asociovaného grafu malých objektov v podobe jedného serializovaného objektu


Serialized lob1

Serialized LOB

  • BLOB – binárny LOB

    • jednoduché použiť (existencia serializácie grafu objektov)

    • graf nie je možné zrekonštruovať bez existencie zodpovedajúcich objektov (tried)

      • hľadanie (chybných) dát človekom

      • verzionovanie

  • CLOB – znakový LOB

    • horší výkon a väčšie miesto na diskoch

    • vlastný parser textovej reprezentácie(XML)

  • pozor na duplikovanie dát v LOBoch


Serialized lob2

Serialized LOB

  • použitie

    • zložitý graf objektov, na ktorý sa referencuje iba jeho vlastníkom

  • výhody

    • jednoduchšia DB štruktúra

    • menšie množstvo dát

  • nevýhody

    • nemožno realizovať SQL dotazy na dáta v LOBoch


Mapovanie dedi nosti

Mapovanie dedičnosti

  • RDBMS neposkytujú realizáciu dedenia

    => potreba mapovania dedičnosti na relačné štruktúry

  • Tabuľka pre dedenie

  • Tabuľka pre každú triedu

  • Tabuľka pre konkrétnu triedu


Tabu ka pre dedenie

Tabuľka pre dedenie


Tabu ka pre dedenie1

Tabuľka pre dedenie

  • výhody

    • jednoduchá údržba (jediná tabuľka)

    • žiadne join-y pri získavaní dát

    • jednoduchší refactoring

      • posúvanie atribútov v objektovej hierarchii

  • nevýhody

    • niektoré polia v tabuľke nemajú vždy význam

    • plytvanie miestom (nepoužité stĺpce)

    • výkonnostný problém (jedna veľká tabuľka s množstvom indexov ...)


Tabu ka pre ka d triedu

Tabuľka pre každú triedu


Tabu ka pre ka d triedu1

Tabuľka pre každú triedu

  • výhody

    • OR mapovanie je priamočiare

    • všetky stĺpce sú relevantné

  • nevýhody

    • informácie o jednom objekte vo viacerých tabuľkách (veľa join-ov)

    • refactoring OO hierarchie spôsobuje zmenu DB

    • supertype tabuľka môže byť úzke miesto (často sa používa) - výkonnostný problém


Tabu ka pre konkr tnu triedu

Tabuľka pre konkrétnu triedu


Tabu ka pre konkr tnu triedu1

Tabuľka pre konkrétnu triedu

  • výhody

    • každá tabuľka je self-contained (všetky polia využité a patria k jednému typu objektu)

    • žiadne join-y pri získavaní objektov konkrétneho typu

    • dobrá výkonnosť (každá tabuľka pre jednu triedu)

  • nevýhody

    • nemožné realizovať FK mapovanie na abstraktný typ

    • ťažší refactoring (zmena atribútu v nadtriede => zmena všetkých tabuliek)

    • získanie kolekcie supertriedy vyžaduje viacero selektov


D tov vrstva

Vzory dátového zdroja


Vzory d tov ho zdroja

Vzory dátového zdroja

  • Table Data Gateway

    • inštancia obsluhuje všetku funkcionalitu súvisiacu s jednou tabuľkou

  • Row Data Gateway

    • inštancia zodpovedá jednému riadku tabuľky (rovnaká štruktúra objektu a DB záznamu)

    • rieši doménovú logiku a svoju perzistenciu(vzniká priama závislosť na DB)

  • Data Mapper – objektovo-relačné mapovanie (ORM)

    • transformuje záznam DB na objekt doménového modelu (transparentne)


Objektovo rela n mapovanie

Objektovo-relačné mapovanie

  • Data Mapper – dátový mapovač


Objektovo rela n mapovanie1

Objektovo-relačné mapovanie


Objektovo rela n mapovanie2

Objektovo-relačné mapovanie


Objektovo rela n mapovanie3

Objektovo-relačné mapovanie


Objektovo rela n mapovanie4

Objektovo-relačné mapovanie


Metad tov or mapovania

Metadátové OR mapovania


Metad tov or mapovania1

Metadátové OR mapovania

  • výhody

    • nezávislosť objektového modelu od dátového zdroja (možnosť použiť aj bez dátového zdroja – testovanie, paralelný vývoj)

    • veľká efektívnosť vývoja a údržby

  • nevýhody

    • ťažšie ovplyvniť generované SQL dotazy (dopad na výkonnosť)


D tov vrstva

Vzory správania


Vzory spr vania

Vzory správania

  • Identity Map – Mapa identít

    • cache načítaných objektov v rámci obchodnej transakcie (prevencia konfliktov pri zápise)

      • man with two watches never knows what time it is

  • Unit of Work – Jednotka práce

    • čítanie objektov v rámci obchodnej transakcie

    • koordinácia zápisu zmenených objektov do DB a riešenie konfliktov v rámci obchodnej transakcie

      • zvyčajne obsahuje Identity Map

      • zvyčajne je súčasťou Data Mappera

  • Lazy Load – Lenivé čítanie

    • transparentné čítanie asociovaných objektov na požiadanie


Identity map

Identity Map


Unit of work

Unit of Work


Lazy load

Lazy Load

  • optimalizované získavanie grafu objektov

    • nie je načítaný celý graf, ale je možné ho transparentne donačítať

  • Lazy Initialization

    • v každej metóde kontrola či je objekt loadnuty

    • závislosť medzi aplikačnou a databázovou vrstvou


Lazy load1

Lazy Load

  • Virtual Proxy

    • problémy s identitou (proxy sa tvári ako skutočný objekt ale nie je to on)

    • pre každý typ treba proxy objekt

      • Java dynamic proxies, bytecode modification

    • vhodné pre kolekcie

  • Value Holder

    • lose of explixitness of strong typing


Lazy initialization pr klad

Lazy Initialization - príklad

class Supplier... {

public List getProducts() {

if (products == null)

products = Product.findForSupplier(getID());

return products;

}

}


Virtual proxy pr klad

Virtual Proxy - príklad

class SupplierVL...

private List products;

public interface VirtualListLoader {

List load();

}

class SupplierMapper...

protected DomainObject doLoad(Long id, ResultSet rs) throws SQLException {

String nameArg = rs.getString(2);

SupplierVL result = new SupplierVL(id, nameArg);

result.setProducts(new VirtualList(new ProductLoader(id)));

return result;

}


Virtual proxy pr klad1

Virtual Proxy - príklad

public class VirtualList extends List {

private List source;

private VirtualListLoader loader;

public VirtualList(VirtualListLoader loader) {

this.loader = loader;

}

private List getSource() {

if (source == null) source = loader.load();

return source;

}

public int size() { return getSource().size(); }

public boolean isEmpty() { return getSource().isEmpty(); }

// ...

}


Value holder pr klad

Value Holder - príklad

class SupplierVH...

private ValueHolderproducts;

public List getProducts() { return (List)products.getValue(); }

class ValueHolder...

private Object value;

private ValueLoader loader;

public ValueHolder(ValueLoader loader) {

this.loader = loader;

}

public Object getValue() {

if (value == null) value = loader.load();

return value;

}

public interface ValueLoader { Object load(); }


Value holder pr klad1

Value Holder - príklad

class SupplierMapper...

protected DomainObject doLoad(Long id, ResultSet rs) throws SQLException {

String nameArg = rs.getString(2);

SupplierVH result = new SupplierVH(id, nameArg);

result.setProducts(new ValueHolder(new ProductLoader(id)));

return result;

}

public static class ProductLoader implements ValueLoader {

private Long id;

public ProductLoader(Long id) { this.id = id; }

public Object load() {

return ProductMapper.create().findForSupplier(id);

}

}


Zhrnutie

Zhrnutie

  • používať metadátové mapovanie

  • realizácia metadátového mapovania je časovo a odborne náročná

  • existujúce OR mapovacie nástroje

    • okrem riešenia mapovania OO na R štruktúry riešia aj ostatné popísané problémy

      • Unit of Work + Identity Map

      • Lazy Load

      • optimalizáciu SQL dotazov

      • použitie SQL dialektov pre rôzne RDBMS

    • TOPLink, Hibernate, OJB, Torque, iBatis


  • Login