5 Podnikové aplikace
Podnikové aplikace. Základní koncepty softwarových architektur. Vrstvená architektura moderních informačních systémů, model-view-controller. Architektura orientovaná na služby (SOA). Nasazení. Základní koncepty cloud computingu. Objektově-relační mapování (ORM) v podnikových aplikacích. Návrhové vzory v rozsáhlých podnikových systémech (Data Transfer Object (DTO), Data Access Object (DAO), Facade, Dependency Injection (DI)). (PA165)
Príklad
Vysvetlenie
Problém
Riešenie
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Voľná "definícia"
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Zdroj, ďalšie čítanie
Podnikové aplikácie (enterprise applications)
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Podniková aplikácia je rozsiahla softvérová platforma, ktorá bola navrhnutá pre použitie vo firemnom prostredí (súkromná firma, štátny podnik a pod.). Podnikové aplikácie sú komplexné, škálovateľné, distribuované a založené na komponentoch.
Podnikové aplikácie
- sú obvykle určené na prepojenie alebo integráciu s ďalšími podnikovými aplikáciami;
- poskytujú nástroje na modelovanie business procesov organizácie za účelom zvýšenia jej efektívnosti a produktivity;
- sú vyvíjané in-house alebo zakúpené ako hotové riešenia (alebo kombinácia oboch);
- Hotové riešenia sa hodia pre "štandardné" oblasti, ako napr. účtovné systémy, systémy pre správu ľudských zdrojov a pod.
- sú niekedy poskytované cloudovým modelom software-as-a-service (viď SaaS);
- umožňujú napr.
- spravovať zdroje organizácie,
- ponúkať a predávať služby a produkty zákazníkom,
- nakupovať služby a produkty od dodávateľov.
Podnikový softvér je súhrnný výraz pre všetky aplikácie, ktoré slúžia pre podporu fungovania organizácie/podniku.
Príklady typov podnikových aplikácií:
- systémy pre spracovanie platieb
- mzdové účtovníctvo
- systémy pre správu obsahu (CMS)
- riadenie ľudských zdrojov (HRM)
- riadenie vzťahov so zákazníkmi (CRM)
- dochádzkový softvér
- systémy pre messaging a spoluprácu (e-mail, VOiP, videomeetingy)
- softvér pre riadenie rizík (Risk Management Software)
- softvér pre riadenie projektov (Project Management Software)
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Viac príkladov napr. »tu«
Základné koncepty softvérových architektúr
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Softvérová architektúra je základná štruktúra softvérového systému, ktorá sa po implementácii len veľmi ťažko mení. (jedna z možných "definícií")
"… the decisions you wish you could get right early in a project."
Ralph Johnson
Príklady softvérových architektúr
- vrstvená (viď »ďalšia sekcia«)
- model-view-controller (viď »sekcia o MVC«)
- architektúra orientovaná na služby (viď »sekcia o SOA«)
- monolitická architektúra
- klient-server (2-vrstvá, 3-vrstvá, …)
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
- peer-to-peer (P2P)
- udalosťmi riadená architektúra
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
- architektúra mikrokernelu
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
- architektúra mikroslužieb
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Vrstvená architektúra
- De facto štandardná architektúra pre väčšinu Java EE (Enterprise Edition) aplikácií
- Komponenty sú organizované do horizontálnych vrstiev, pričom každá vrstva vykonáva konkrétnu funkciu (prezentačná logika, business logika, …).
- Vrstvy môžu byť uzavrené (closed) alebo otvorené (open), otvorené vrstvy sa dajú pri prechode požiadavku vrstvami preskočiť.
- Otvorené vrstvy môžu zhoršovať vlastnosti aplikácie (porušenie izolácie vrstiev).
- Počet a typ vrstiev nie je pevne daný, väčšina aplikácií má 4 vrstvy:
- prezentačná vrstva (používateľské rozhranie),
- business vrstva (logika aplikácie),
- persistence vrstva (prístup do databázy),
- databáza.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Výhody
- oddelenie zodpovednosti (separation of concerns) medzi komponentami = komponenty v danej vrstve riešia výhradne logiku danej vrstvy
- dobrá ako základná architektúra
- jednoduchý vývoj
Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.
Conway's law
- jednoduché testovanie
- vrstvy sa dajú pri testovaní úplne odizolovať, napr. pomocou mockovania nižších vrstiev
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Nevýhody
- "architecture sinkhole anti-pattern" = požiadavky sa presúvajú medzi vrstvami prakticky bez zmeny ( nie sú vrstvy zvolené nesprávne?)
- ak max cca 20% požiadaviek je takýchto, je to ešte ± OK
- aplikácia je často monolit, čo môže sťažovať nasadenie, zhoršovať robustnosť, spoľahlivosť, výkon a škálovateľnosť
- nízky výkon
- v niektorých prípadoch môže byť prechádzanie vrstvami zbytočne neefektívne
- zložité nasadenie
- malá zmena v jednom komponente môže vyžadovať znovunasadenie (takmer) celej aplikácie – môže sa stať, že znovunasadenie bude musieť byť naplánované napr. na víkend alebo mimo pracovné hodiny
- nedá sa jednoducho použiť CD (continuous delivery)
- slabá škálovateľnosť
Model-view-controller (MVC)
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Výhoda – separation of concerns: oddelenie backendu a frontendu jednoduchšie úpravy v aplikácii.
Service-oriented-architecture (SOA)
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
SOA (servisne-orientovaná architektúra) je návrhová filozofia; kolekcia služieb, ktoré medzi sebou komunikujú a pre komunikáciu využívajú štandardizované protokoly a dohodnuté rozhrania. Vďaka týmto rozhraniam sa môže meniť implementácia služieb bez toho, aby bola ovplyvnená schopnosť systému služby využívať.
SOA is an architectural style, realized as a collection of collaborating agents, each called a service, whose goal is to manage complexity and achieve architectural resilience and robustness through ideas such as loose coupling, location transparency, and protocol independence.
IBM
Služba je entita, ktorá má popis a ktorá je dostupná cez rozhranie, ktoré umožňuje klientovi službu využívať. Služba v kontexte SOA je sprístupnená časť funkcionality s nasledujúcimi vlastnosťami:
- Kontrakt rozhrania ku službe je nezávislý na platforme.
- Služba môže byť dynamicky vyhľadaná a použitá.
- Služba je sebestačná; udržiava si svoj vlastný stav.
PA165
Každý IT prostriedok, systém, aplikácia môže vystupovať ako služba.
Príklad SOA: niektoré služby v e-shope
- katalóg produktov
- platobná brána
- spracovanie objednávky
- doprava
Životný cyklus SOA
- návrh,
- kompozícia,
- konzumácia (rôznymi spôsobmi používateľmi, ďalšími systémami).
Rozdiel medzi SOA a Web Services
SOA je spôsob navrhovania systémov, zatiaľ čo Web services je implementačná technológia, ktorá používa špecifické štandardy a protokoly k dosiahnutiu riešenia založeného na princípoch SOA.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
FI Wiki: SOA
Nasadenie (deployment)
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Pod pojmom nasadenie sa myslia všetky kroky, procesy a aktivity, ktoré sprístupnia systém alebo jeho novú verziu zamýšľaným používateľom. V súčasnosti vývojári nasadzujú aplikácie a ich aktualizácie pomocou kombinácie manuálnych a automatizovaných procesov.
Odlišujeme dve hlavné prostredia:
- development environment (kde sa aplikácia vyvíja, testuje),
- live/production environment (kam je aplikácia nasadená pre koncových používateľov, napr. cloud – SaaS alebo app store).
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Softvérové vydanie (software release) je konkrétna verzia kódu a jeho závislostí, ktorá je sprístupnená na nasadenie.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
DevOps je metodológia a sada best practices, ktorá kombinuje vývoj softvéru (Dev) a jeho prevádzkovanie (IT operations – Ops). Jej hlavným cieľom je skrátiť vývojový cyklus pri zachovaní vysokej kvality softvéru.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Súčasťou DevOps býva Continuous Integration (CI) framework, podľa ktorého sú zmeny pravidelne integrované do zdieľaného repozitára, pokojne aj niekoľkokrát denne. Tento kód je automaticky testovaný za účelom skorého nájdenia (a odstránenia) chýb.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Continuous Deployment (CD) popisuje stratégiu nasadzovania softvéru, podľa ktorej nový kód musí prejsť sadou automatizovaných testov než bude (automaticky) uvoľnený do produkčného prostredia. Nutnou podmienkou sú kvalitné testy.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Wikipedia: DevOps
Základné koncepty cloud computingu
Cloud computing je v podstate distribuovaná výpočetná platforma, ktorá poskytuje svoje prostriedky širokému spektru používateľov na škálovanie, virtualizáciu hardvérovej a/alebo softvérovej infraštruktúry cez internet.
Techpedia
Cloud computing je model navrhnutý pre umožnenie pohodlného prístupu ku zdieľaným konfigurovateľným výpočetným zdrojom (sieťam, serverom, úložiskám, aplikáciám, službám), ktoré môžu byť okamžite poskytuné s minimálnou správou alebo potrebou zásahu poskytovateľa tejto služby.
NIST
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Výhody
- služby na vyžiadanie (samoobsluha)
- združovánie zdrojov nezávisle na umiestnení
- prenos rizika
- nízke zaobstarávacie náklady (netreba veľké investície do infraštruktúry)
- jednoduchá správa
- spoľahlivosť
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Nevýhody
- neisté súkromie a bezpečnosť
- len obmedzená kontrola
- priama závislosť na poskytovateľovi (vendor lock-in)
Základné charakteristiky 5
- Samoobsluha na vyžiadanie
- Zákazník si môže vyžiadať výpočetné zdroje podľa svojej potreby. Tieto požiadavky sú na strane poskytovateľa riešené automaticky v priebehu pár minút bez nutnosti ľudskej interakcie.
- Široký sieťový prístup
- Prístup k technológii je umožnený cez sieť pomocou rôznych klientských platforiem (počítače, mobily, webové prehliadače, …) vďaka použitiu štandardných mechanizmov.
- Združovanie zdrojov
- Zdroje poskytovateľa cloudovej služby sú delené medzi niekoľkých používateľov vďaka multi-klientskému modelu (multi-tenant model). Rôzne fyzické a virtuálne zdroje sú dynamicky prideľované na vyžiadanie zákazníka. Zákazník nevie, kde konkrétne sa jeho aktuálne zdroje nachádzajú.
- Rýchla elasticita
- Zdroje môžu byť získané a uvoľnené podľa potreby (často automaticky), aby pokryli aktuálne požiadavky zákazníka.
- Meranie služby
- Používané zdroje sú monitorované, riadené a reportované zákazníkovi, čím mu (a tiež aj poskytovateľovi) poskytujú transparentný prehľad o spotrebe a nákladoch.
Modely služieb 3
- Software as a Service (SaaS)
-
Zákazník používa poskytovateľove hotové aplikácie (bežiace na cloude), ktoré sú dostupné z rôznych klientských zariadení pomocou tenkého klienta (napr. prehliadač) alebo tučného klienta (špecifická aplikácia).
-
Zákazník nespravuje a ani neriadi cloudovú infraštruktúru bežiacu na pozadí.
Príklady: GMail, Google Docs, Dropbox, MS Office 365
- Platform as a Service (PaaS)
-
Zákazník môže využiť poskytovateľovu platformu pre nasadenie (poskytovateľom podporovaných) vlastných alebo získaných aplikácií.
-
Zákazník nespravuje a ani neriadi cloudovú infraštruktúru bežiacu na pozadí (sieťové pripojenia, servery, operačné systémy, úložisko), ale má kontrolu nad nasadenými aplikáciami a (možno) aj nad konfiguráciou prostredia, ktoré hostuje tieto aplikácie.
Príklady: Google App Engine, Heroku
- Infrastructure as a Service (IaaS)
-
Poskytovateľ poskytuje zákazníkovi výpočetný výkon, úložisko, sieťové pripojenia a ďalšie základné výpočetné zdroje.
-
Zákazník nespravuje a ani neriadi cloudovú infraštruktúru bežiacu na pozadí, zato však má kontrolu nad operačnými systémami, úložiskom a nasadenými aplikáciami a (možno) obmedzenú kontrolu nad niektorými sieťovými komponentami (napr. firewall).
Prakticky sa jedná o podobnú situáciu ako v prípade vlastného hardvéru, avšak nie je potrebné daný hardvér vlastniť, udržiavať a dokupovať/predávať zdroje pri škálovaní.
Príklad: Google Computing Engine, DigitalOcean, Amazon Web Services (AWS), Microsoft Azure
Modely nasadenia 4
- Súkromný cloud
- Infraštruktúru používa výhradne jeden zákazník (organizácia).
- Infraštruktúru môže vlastniť, spravovať a poskytovať daná organizácia, tretia strana, alebo kombinácia oboch.
- Infraštruktúra sa môže nachádzať v priestoroch zákazníka alebo poskytovateľa.
- Komunitný cloud
- Infraštruktúru používa výhradne určitá komunita zákazníkov.
- Infraštruktúru môže vlastniť, spravovať a poskytovať jedna alebo viacero organizácií z danej komunity, tretia strana, prípadne nejaká ich kombinácia.
- Infraštruktúra sa môže nachádzať v priestoroch poskytovateľa alebo u zákazníka/zákazníkov.
- Verejný cloud
- Infraštruktúru môže používať široká verejnosť.
- Infraštruktúru môže vlastniť, spravovať a poskytovať prakticky akákoľvek organizácia alebo kombinácia organizácií.
- Infraštruktúra sa nachádza v priestoroch poskytovateľa.
- Hybridný cloud
- Voľné spojenie dvoch alebo viacerých rôznych infraštruktúr spomenutých vyššie.
Objektovo-relačné mapovanie (ORM)
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Chceme používať relačnú databázu v OOP aplikácii.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Problém: problematická kompatibilita medzi OOP prístupom a relačným prístupom.
Základné nezhody intuitívne (viac v ďalšej sekcii):
- Dátové typy v OOP: objekty, zoznamy, množiny, mapy, … (často nie len skalárne hodnoty)
- Dátové typy v DB: skalárne hodnoty (
number
, varchar
, …); vzťahy medzi záznamami pomocou foreign keys a ďalších tabuliek
Klasický RDBMS takéto štruktúrované dáta nevie jednoducho spravovať, programátor by musel naimplementovať delenie údajov do tabuliek, obojsmernú konverziu typov všetkých použitých tried a tiež opätovné vytvorenie objektu pomocou skladania údajov z viacerých tabuliek.
Riešenie: ORM knižnica
Príklad: JBoss Hibernate
(Java)
Nezhody medzi objektami a reláciami (tzv. object-relational impedance mismatch)
- Rozdielna granularita
- Môže sa stať, že objektový model má napr. viac tried ako je počet odpovedajúcich tabuliek v databázi (napr. reprezentácia adresy).
- Dedičnosť
- V (štandardných) relačných databázach tento koncept neexistuje.
- Identita
- V relačných databázach sa rovnosť záznamov určuje podľa primárneho kľúča, zatiaľ čo napr. v Jave existuje identita objektov (
a == b
) a rovnosť objektov (a.equals(b)
).
- Vzťahy medzi entitami
- V OOP sú vzťahy reprezentované jednosmernými odkazmi na objekty (rovnako v zoznamoch, mapách a pod.), zatiaľ čo v RDBMS sa používajú cudzie kľúče (foreign keys). Ak sú potrebné obojsmerné asociácie, napr. v Jave treba vytvoriť ďalšiu asociáciu pre druhý smer.
- Prístup k objektom
- V OOP sa k objektom pristupuje cez odkazy z iných objektov (prechádzanie grafu). V relačnej databáze je tento prístup neefektívny; typicky chceme minimalizovať počet SQL dotazov, tj. použiť joiny a obmedziť výber na požadované entity než s nimi začneme pracovať.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
ORM je programovacia technika, ktorá zaisťuje automatickú konverziu dát medzi nekompatibilnými typovými systémami, konkrétne medzi relačnou databázou a objektovo orientovaným programovacím jazykom.
Ide o preklad reprezentácie objektov do a z formátu, ktorý sa dá uchovávať v databázi tak, aby zostali zachované vlastnosti a vzťahy objektov. Ak je táto funkcionalita (uloženie a získanie) implementovaná, hovoríme o objektoch, že sú perzistentné.
Jednoduchý príklad: adresár
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
– každá osoba je jeden objekt.
Objekt v Jave:
Model relačnej databázy (zjednodušený model, ktorý neumožňuje mať jedno tel. číslo/adresu pre viacero osôb, neukladá efektívne adresu a pod.):
Alternatívne riešenia:
- použiť objektovo-orientovanú databázu (OODBMS) namiesto relačnej (RDBMS);
- použiť dokumentovo-orientovanú databázu (napr. natívnu XML databázu) a k nej ODM (object-document mapper) namiesto ORM.
Návrhové vzory (design patterns)
Návrhový vzor (v softvérovom inžinierstve) je všeobecné znovupoužiteľné riešenie často sa vyskytujúceho návrhového problému. Nejedná sa o hotový návrh, ktorý sa dá preklopiť do zdrojového kódu; ide o popis alebo predlohu riešenia. Návrhové vzory predstavujú formalizované best practices, ktoré programátor môže použiť pri riešení bežných problémov pri návrhu softvéru.
Wikipédia
Príklady návrhových vzorov: factory, adapter, iterator, builder, decorator, singleton, visitor, …
Dependency Injection (DI)
Povedzme, že máme triedu Client
, ktorá pre svoju činnosť potrebuje funkcionalitu triedy ServiceImpl
.
Takto previazané triedy sú tightly coupled. Ak by trebalo upraviť triedu ServiceImpl
, bolo by nutné upraviť aj triedu Client
, čo nie je ideálne.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Chceme dosiahnuť loose coupling medzi triedami/komponentami, tj. ich čo najväčšiu nezávislosť či nepreviazanosť.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Dependency inversion principle (DIP) odporúča používať abstraktné závislosti (rozhrania) namiesto konkrétnych (špecifických implementácií).
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Inversion of control principle (IoC) presúva zodpovednosť za vytvorenie a previazanie objektov z aplikácie na framework.
- IoC sa používa na zvýšenie modularity a rozšíriteľnosti programu.
- Príklad IoC frameworku:
Spring
(Java), Spring.NET
(C#)
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Dependency injection (DI) je spôsob, ako IoC naimplementovať.
Podľa DIP, IoC a rôznych druhov DI by trieda Client
vyzerala nasledovne (@Inject
je v Jave direktíva pre IoC framework):
Data Access Object (DAO)
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Návrhový vzor, ktorý oddeľuje low-level špecifiká prístupu k dátam (napr. využitia relačnej databázy) od high-level metód (logiky aplikácie).
- Súčasťou vzoru sú zvyčajne tri triedy:
- rozhranie (DAO interface), ktoré definuje poskytované metódy prístupu k dátam – CRUD operácie,
- konkrétna trieda, ktorá implementuje rozhranie pre prístup ku konkrétnemu zdroju dát,
- entitná trieda, ktorá definuje konkrétny dátový model (atribúty a ich typy).
- Tiež tzv. model object alebo value object.
- Jej inštancie uchovávajú konkrétne údaje.

Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Výhoda – princíp oddelenia zodpovednosti (separation of concerns principle): program je rozdelený na časti, ktorých funkcionalita (zodpovenosti) sa neprekrývajú.
- Programátor môže implementovať logiku aplikácie bez toho, aby vedel ako funguje prístup k dátam.
- Spôsob ukladania dát sa dá jednoducho zmeniť bez toho, aby bolo treba upravovať vyššiu logiku programu (za predpokladu, že pôvodné rozhranie zostane zachované).
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Nevýhoda – opakujúci sa kód (boilerplate code) pre každú entitu, možno vyriešiť dedením všeobecnej implementácie.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Nevýhoda – aplikácia môže vďaka využívaniu metód poskytovaných cez DAO pristupovať k dátam neefektívne (viď napr. problém n+1).
Problém "n+1"
Majme entitu článok
a k nej entitu komentár
vo vzťahu many-to-one (článok môže mať viacero komentárov; komentár patrí k práve jednému článku).
Povedzme, že v aplikácii najprv získame zoznam všetkých komentárov (jeden dotaz). Potom pre každý komentár cez for
cyklus dohľadáme napr. názov odpovedajúceho článku. ( dotazov). Takto použijeme (veľmi neefektívne) dotazov na operáciu, pre ktorú by stačil jeden dotaz obsahujúci join medzi entitami.
Zdroje
Fasáda (facade)
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Fasáda je štruktúrový návrhový vzor, ktorý poskytuje zjednodušené rozhranie pre knižnicu, framework, alebo inú komplikovanú sadu tried.

The facade lets the clients interact with the madness!
YouTube comment section
Klienti (resp. iné systémy/podsystémy) by mali s daným podsystémom komunikovať výhradne cez jeho fasádu (ak im zjednodušené rozhranie postačuje). Prípadné zmeny v implementácii systému sa takto klientov nemusia vôbec dotknúť.
Príklad zo života: pri telefonických objednávkach predstavuje operátor fasádu a sprístupňuje tak možnosti obchodu.
Data Transfer Object (DTO)
- Tiež tzv. value object.
- Používa sa výhradne ako dátová štruktúra v prípadoch, kedy treba v jednom celku preniesť údaje napr. medzi klientom a serverom (zapuzdrenie dát).
- Je serializovateľný (viď doplňujúcu sekciu o serializácii).
- Neobsahuje žiadnu logiku a k atribútom má definované gettery a settery, prípadne metódy potrebné pre serializáciu.
- Môže obsahovať atribúty viacerých entít (agregácia dát) – cieľom je preniesť všetky potrebné dáta v jednom objekte.
- Objekt je pre klienta read-only; ak je potrebná zmena, klient si vytvorí nový DTO s aktualizovanými atribútmi a pošle ho späť na server.
Príklad DTO v Jave (equals()
a hashCode()
sú pre krátkosť vynechané):
Zjednodušený príklad použitia DTO v klient-server aplikácii: server získa údaje z databázy, naplní nimi vhodný DTO a pošle ho klientovi.
Serializácia
Serializácia je konverzia objektu do formátu, ktorý sa dá uložiť (do súboru, bufferu, …) alebo preniesť (napr. cez sieť), tak, aby ho bolo možné neskôr znovu vytvoriť so zachovaním pôvodného stavu objektu. Opačná operácia sa nazýva deserializácia. Serializovať sa dá napr. do JSONu, prípadne do XML alebo ľubovoľného vlastného formátu (najčastejšie string, prípadne iný byte stream).
Podobnú operáciu popisuje pojem marshalling. Rozdiel medzi serializáciou a marshallingom podľa Javy:
To "marshal" an object means to record its state and codebase(s) in such a way that when the marshalled object is "unmarshalled", a copy of the original object is obtained, possibly by automatically loading the class definitions of the object. You can marshal any object that is serializable or remote. Marshalling is like serialization, except marshalling also records codebases. Marshalling is different from serialization in that marshalling treats remote objects specially. A […] serializable object stored as a (marshalled object) represents the object itself, while […] a remote object stored as a (marshalled object) represents a "pointer" to the object.
RFC 2713
Zdroje