![Page 1: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/1.jpg)
Problematikadatového přístupuv business aplikacích
Bc. Michal Jakubec
MCSE, MCSD, MCDBA, MCTS
http://www.jakubec.cz/
1
![Page 2: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/2.jpg)
Obsah
Stručně o architektuře aplikací Požadavky na datový přístup Možnosti datového přístupu Ukázka řešení datového přístupu
2
![Page 3: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/3.jpg)
Co nás nyní čeká? (1/4)
Stručně o architektuře aplikací Požadavky na datový přístup Možnosti datového přístupu Ukázka řešení datového přístupu
3
![Page 4: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/4.jpg)
Na počátku stojí požadavky
Interakce
Uživatel Systém
4
![Page 5: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/5.jpg)
Systém
Konceptuální model systému
Uživatelské rozhraní
Aplikační logika
Datové úložiště
Datový přístup
Uživatel
5
![Page 6: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/6.jpg)
Kompetence vrstev modelu
Uživatelské rozhraní Aplikační logika Datový přístup• identifikace uživatele
• přihlášení• odhlášení
• přístup k funkcím systému
• nabídky• zkratkové klávesy
• vstup údajů• formuláře• ovládací prvky
• prezentace údajů• tabulky, grafy
• řízení přístupu• autentizace• autorizace
• vykonávání činností• zpracování údajů• koordinace aktivit
• kontrola přijatých údajů
• validace• verifikace
• sledování provozu• auditing
• práce s daty úložiště• načítání dat• aktualizace dat• výběr dat dle
podmínek• práce se strukturou
úložiště (volitelně)• načítání• aktualizace• porovnávání
• práce s konfigurací aplikace
6
![Page 7: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/7.jpg)
Fyzické uspořádání vrstev
Datové úložiště
Uživatelské rozhraní
Aplikační logika
Datový přístup
Databázový server
„Tlustí“ klienti
Web
ový
serv
er
ProhlížečProhlížeč
Uživatelské rozhraní
Aplikační logika
Datové úložiště
Datový přístup
Prohlížeč
Databázový server
Klie
nti
Aplikační logika
Datový přístup
Datové úložiště
Uživatelské rozhraní
Databázový server
Apl
ikač
ní s
erve
r
„Chytří“ klienti
2-vrstváarchitektura
Webová architektura 3-vrstváarchitektura
7
Této oblasti se budeme dále věnovat!
![Page 8: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/8.jpg)
Shrnutí Funkčnost aplikace lze rozčlenit do vrstev (layers)
uživatelské rozhraní aplikační logika datový přístup
Fyzické umístění vrstev (tiers) určuje architekturu 2-vrstvá (2-tier) architektura 3-vrstvá/n-vrstvá (n-tier) architektura (distribuovaná) webová architektura
V dalších částech se budeme věnovat výhradně vrstvě datového přístupu
8
![Page 9: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/9.jpg)
Co nás nyní čeká? (2/4)
Stručně o architektuře aplikací Požadavky na datový přístup Možnosti datového přístupu Ukázka řešení datového přístupu
9
![Page 10: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/10.jpg)
Požadavky na datový přístup
Datový přístup
SQL Server
Oracle AccessBLOB
XMLXMLXML
Seznam položek Detail položky Tisková sestava
Off-lineúložiště
Uložit Storno
10
Metadata
![Page 11: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/11.jpg)
Elementární práce se záznamy
Operace se strukturovanými daty (CRUD)vytvoření, úprava, smazání, načítání,
vyhledáváníobecně řešeno pomocí O/R mapování
Operace s nestrukturovanými daty (BLOB)ukládání, načítání, vyhledávání, indexaceřešeno individuálně (např. FILESTREAM)
11
Detail položky
Uložit Storno
![Page 12: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/12.jpg)
Hromadná práce se záznamy
Zobrazení záznamů v pohledech filtrace, řazení, stránkování, početnavigace mezi záznamy různých typůobecně dynamické dotazy => univerzální
Zobrazení záznamů v sestaváchspojování, seskupování, hierarchieobecně statické dotazy => jednoúčelové
12
Seznam položek
![Page 13: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/13.jpg)
Statické dotazy Výběrové příkazy sestavené přímo v kódu
např. LINQ, NHibernate Criteria API Ideálně s podporou kontroly syntaxe
LINQ podporuje, NHibernate nikoliv Použití v kódu aplikační logiky a v sestavách
IList<Title> titles = session.CreateCriteria(typeof(Title)) .Add(Restrictions.Like("AuthorName", "Knuth%")) .Add(Restrictions.Eq("PublisherId", publisherId).List();
NHibernate
IList<Title> titles = from t in context.Titles where t.AuthorName.StartsWith("Knuth") and t.PublisherId == publisherId select t;
LINQ
13
![Page 14: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/14.jpg)
Dynamické dotazy Výběrové příkazy sestavené či upravené za běhu
zpravidla vyžadována vhodně definovaná syntax objektový model potřebný pro programovou manipulaci
Použití zejména v uživatelsky definovaných pohledech kombinují pevnou definici dotazu a volitelné filtrační podmínky
<selector entity="Task" property="Id"> <condition property="Disabled" comparison="Equals" type="flag" value="false"/> <set junction="Or"> <condition property="Type.Mark" comparison="Equals" value="Development"/> <condition property="Type.Mark" comparison="Equals" value="Repair"/> </set> <condition property="State.Mark" comparison="Equals" value="Billed"/></selector>
14
SELECT T.IdFROM Task AS TINNER JOIN TaskType AS TT ON T.TypeId = TT.IdINNER JOIN TaskState AS TS ON T.StateId = TS.IdWHERE T.Disabled = 0 AND (TT.Mark = "Development" OR TT.Mark = "Repair") AND TS.Mark = "Billed"
![Page 15: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/15.jpg)
Dynamický dotaz – ukázka
Název publikace ^2 Autor Vydavatelství ^1
Jádro systému Windows Dráb, Martin Computer Press
Umění programování Knuth, Donald E. Computer Press
Destilované UML Fowler, Martin Grada
Objektové programování Čada, Ondřej Grada
SELECT T.Name, T.AuthorName, P.NameFROM Title AS TINNER JOIN Publisher AS PON T.PublisherId = P.IdORDER BY P.Name, T.Name
15
![Page 16: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/16.jpg)
Dynamický dotaz – restrikce
SELECT T.Name, T.AuthorName, P.NameFROM Title AS TINNER JOIN Publisher AS PON T.PublisherId = P.IdWHERE T.PublisherId = @DefaultPublisherIdORDER BY P.Name, T.Name
Název publikace ^2 Autor Vydavatelství ^1
Jádro systému Windows Dráb, Martin Computer Press
Umění programování Knuth, Donald E. Computer Press
Destilované UML Fowler, Martin Grada
Objektové programování Čada, Ondřej Grada
16
![Page 17: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/17.jpg)
Dynamický dotaz – filtrace
SELECT T.Name, T.AuthorName, P.NameFROM Title AS TINNER JOIN Publisher AS PON T.PublisherId = P.IdWHERE T.PublisherId = @DefaultPublisherId AND T.AuthorName LIKE 'Knuth%'ORDER BY P.Name, T.Name
Název publikace ^2 Autor [Knuth*] Vydavatelství ^1
Jádro systému Windows Dráb, Martin Computer Press
Umění programování Knuth, Donald E. Computer Press
Destilované UML Fowler, Martin Grada
Objektové programování Čada, Ondřej Grada
17
![Page 18: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/18.jpg)
Relační databázová úložiště
Prakticky „standardem“ ukládání dat v podnikových informačních systémechdostatek znalostí a zkušeností mezi vývojářidobrá kompatibilita produktů různých výrobců intuitivní i pro neškolené uživatele („tabulky“)
V dohledné době „není lepší volba“ již bylo investováno do relačních technologiíčistě objektová úložiště se zatím neprosadila
18
![Page 19: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/19.jpg)
Úložiště objektů typu BLOB
Určeno pro správu velkých objemů datdokumenty, obrázky, audio, video
Možnosti realizacesamostatně v souborovém systému„in-line“, SQL Server FILESTREAM
Kombinovaná řešení mají vyšší náklady na provoz a údržbuzálohování i obnova by měla být atomická!
19
BLOB
![Page 20: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/20.jpg)
Úložiště metadat Obsahuje informace o struktuře údajů, se
kterými aplikace pracuje Umožňuje přizpůsobení aplikace za běhu
pohledy, dynamické dotazy, business pravidla Podporuje flexibilní implementaci zabezpečení
řízení a sledování přístupu k entitám, atributům Implementováno staticky či dynamicky
doménové třídy Entity, Attribute, atd.
20
Metadata
![Page 21: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/21.jpg)
Off-line úložiště na klientu Poskytuje možnost práce uživatele i bez připojení k
primárnímu datovému zdroji např. pracovníci v terénu mimo dosah sítě
Řešeno nejčastěji instalací „odlehčeného“ databázového stroje např. MS SQL Server Express či Compact
Lze řešit také jednoduššími prostředky serializací kolekce doménových objektů serializací instancí třídy DataSet pomocí práce se sadou dokumentů XML
21
Off-lineúložiště
![Page 22: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/22.jpg)
Shrnutí Komplexní požadavky na datový přístup
Zobrazení záznamů v pohledech Zobrazení záznamů v sestavách Operace se strukturovanými daty (CRUD) Operace s nestrukturovanými daty (BLOB)
Obsluhujeme různé typy datových úložišť Relační databázová úložiště Úložiště pro BLOBy Úložiště pro metadata, Off-line úložiště
22
![Page 23: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/23.jpg)
Co nás nyní čeká? (3/4)
Stručně o architektuře aplikací Požadavky na datový přístup Možnosti datového přístupu Ukázka řešení datového přístupu
23
![Page 24: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/24.jpg)
Druhy datového přístupu
Přístup k relačním databázímADO.NET, NHibernate, Entity Framework, ...
Přístup k dokumentům XMLXmlDocument, XDocument, ...
Přístup k BLOB objektům (soubory)souborový systémSQL Server FILESTREAM
24
![Page 25: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/25.jpg)
Možnosti přístupu k databázi
Elementární řádkový přístup (Command) INSERT, UPDATE, DELETE, příp. SELECT
Manipulace s množinami řádkůserverový kurzor (Command/DataReader)odpojený režim (DataAdapter/DataSet)
Objektově-relační mapování (ORM)manipulace s entitními instancemiobjektově-orientované dotazy
25
![Page 26: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/26.jpg)
Srovnání způsobů práce s DBKonvenční přístup
var con = new SqlConnection( connString);var cmd = new SqlCommand( InsertCommandText, con);
cmd.Parameters.AddWithValue( "@LastName", "Čapek");cmd.Parameters.AddWithValue( "@FirstName", "Karel");cmd.Parameters.AddWithValue( "@BornOn", new DateTime(1890, 1, 9));
con.Open();cmd.ExecuteNonQuery();con.Close();
Přístup přes ORM
var ctx = new LibraryContext();var a = new Author();
a.LastName = "Čapek";a.FirstName = "Karel";a.BornOn = new DateTime( 1890, 1, 9);
ctx.AuthorSet.AddObject(a);ctx.SaveChanges();
26
Pozor! Z důvodu přehlednosti kód neobsahuje ošetření korektního uvolnění prostředků (IDisposable).
![Page 27: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/27.jpg)
Proč je ORM užitečné? Dobře zapadá do obecného vývojového procesu
analýza požadavků => konceptuální model návrh řešení => doménový model realizace řešení => ORM => relační datový model
Zjednodušuje práci aplikace s databází vývojář soustředí výhradně na business logiku
nemusí řešit problémy datového přístupu
Vytváří oddělovací vrstvu mezi aplikací a databází menší citlivost kódu aplikace vůči změnám relačních
databázových struktur
27
![Page 28: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/28.jpg)
V čem ORM působí potíže? Obtížná volba té „správné“ platformy
existuje mnoho technologií s různou škálou funkčnosti Skrývá implementační detaily relační databáze
vývojáři nedokáží odhadnout důsledky kódu, který tvoří Často ovlivňuje strukturu doménových tříd
dědění z určené bázové třídy ORM přítomnost atributů reprezentujících PK, FK
Nutno spravovat údaje o mapování buď v samostatných souborech či jako anotace v kódu
V mezních případech vznikají problémy s výkonem
28
![Page 29: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/29.jpg)
Používat či nepoužívat ORM? ORM rozhodně ano, ale samo nepostačí
vhodné zejména pro rozsáhlejší aplikace Je vhodné oddělit použité ORM od kódu
aplikační logiky (viz následující téma) usnadní případnou změnu použitého ORM vhodný a flexibilní je vzor Repository nejedná se však o triviální problematiku!
V žádném případě však ORM nezbavuje vývojáře nutnosti rozumět relačním databázím!
29
![Page 30: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/30.jpg)
Co nás nyní čeká? (4/4)
Stručně o architektuře aplikací Požadavky na datový přístup Možnosti řešení datového přístupu Ukázka řešení datového přístupu
30
![Page 31: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/31.jpg)
Příklad zadání aplikace Navrhněte databázi informačního systému
Městské knihovny Systém bude evidovat publikace, jejich autory,
kategorie a exempláře Systém bude sledovat čtenáře, jejich výpůjčky
a zaplacení ročních členských poplatků Evidované údaje jednotlivých agend jsou
požadovány v obvyklém rozsahu jejich volba je na uvážení řešitele
31
![Page 32: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/32.jpg)
Konceptuální model (1/4)
Nalezení pojmů problémové domény
32
Publikace Autor ExemplářKategorie
Čtenář Výpůjčka Poplatek
![Page 33: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/33.jpg)
Konceptuální model (2/4)
Vyznačení vztahů mezi pojmy
33
PublikaceAutor Exemplář
Kategorie
Čtenář VýpůjčkaPoplatek
![Page 34: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/34.jpg)
PublikaceAutor Exemplář
Kategorie
Čtenář VýpůjčkaPoplatek
0..*1..*
1
0..*
0..*1
0..*1
1
0..*
10..*
Konceptuální model (3/4)
34
Určení násobnosti vztahů
![Page 35: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/35.jpg)
Konceptuální model (4/4)
35
Přiřazení atributů
Značka : textNázev : textVydáno : datum
Publikace
Příjmení : textJméno : text
AutorZnačka : textPořízeno : datumCena : měna
Exemplář
Název : text
Kategorie
Značka : textPříjmení : textJméno : text
Čtenář
Půjčeno : datumVráceno : datum?
VýpůjčkaČástka : měnaRok : čísloZaplaceno : datum
Poplatek
0..*1..*
1
0..*
0..*1
0..*1
1
0..*
10..*
![Page 36: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/36.jpg)
Doménový model aplikace (1/3)
Transformace identifikátorů
36
Mark : stringName : stringIssuedOn : DateTime
Publication
LastName : stringFirstName : string
AuthorMark : stringBoughtOn : DateTimePrice : decimal
Copy
Name : string
Category
Mark : stringLastName : stringFirstName : string
Reader
ProvidedOn : DateTimeReturnedOn : DateTime?
LoanPrice : decimalYear : intPaidOn : DateTime
Payment
0..*1..*
1
0..*
0..*1
0..*1
1
0..*
10..*
![Page 37: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/37.jpg)
Doménový model aplikace (2/3)
Vyznačeny (primární) průchodnosti
37
Mark : stringName : stringIssuedOn : DateTime
Publication
LastName : stringFirstName : string
AuthorMark : stringBoughtOn : DateTimePrice : decimal
Copy
Name : string
Category
Mark : stringLastName : stringFirstName : string
Reader
ProvidedOn : DateTimeReturnedOn : DateTime?
LoanPrice : decimalYear : intPaidOn : DateTime
Payment
0..*1..*
1
0..*
0..*1
0..*1
1
0..*
10..*
![Page 38: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/38.jpg)
Relační model aplikace (1/2)
Vytvořen dle doménového modelu
38
«pk» Id : intMark : nvarchar(8)Name : nvarchar(64)IssuedOn : datetime
Publication
«pk» Id : intLastName : nvarchar(32)FirstName : nvarchar(32)
Author
«pk» Id : intMark : nvarchar(8)Price : moneyBoughtOn : datetime
Copy
«pk» Id : intName : nvarchar(64)
Category
«pk» Id : intMark : nvarchar(8)LastName : nvarchar(32)FirstName: nvarchar(32)
Reader
«pk» Id : intProvidedOn : datetimeReturnedOn : datetime?
Loan«pk» Id : intAmount : moneyYear : intPaidOn : datetime
Payment
1
0..*
«fk» CategoryId
0..*1
«fk»PublicationId
«fk»ReaderId
0..*1
1
0..*
«fk» CopyId
«fk»ReaderId
10..*
Rank : int
Authorship
«pk»«fk»AuthorId
0..*1 11..*«pk»«fk»
PublicationId
![Page 39: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/39.jpg)
Doménový model aplikace (3/3)
Rozšířen o prvky podporující ORM
39
Id : intMark : nvarchar(8)Name : nvarchar(64)IssuedOn : datetimeCategoryId : int
Publication
Id : intLastName : nvarchar(32)FirstName : nvarchar(32)
AuthorId : intMark : nvarchar(8)Price : moneyBoughtOn : datetimePublicationId : int
Copy
Id : intName : nvarchar(64)
Category
Id : intMark : nvarchar(8)LastName : nvarchar(32)FirstName: nvarchar(32)
ReaderId : intProvidedOn : datetimeReturnedOn : datetime?CopyId : intReaderId : int
Loan
Id : intAmount : moneyYear : intPaidOn : datetimeReaderId : int
Payment
10..*
0..*1
0..*1
10..*
10..*
Id : intPublicationId : intAuthorId : intRank : int
Authorship
0..*1 11..*
![Page 40: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/40.jpg)
Relační model aplikace (2/2)
Rozšířen o prvky podporující ORM
40
«pk» Id : intMark : nvarchar(8)Name : nvarchar(64)IssuedOn : datetime
Publication
«pk» Id : intLastName : nvarchar(32)FirstName : nvarchar(32)
Author
«pk» Id : intMark : nvarchar(8)Price : moneyBoughtOn : datetime
Copy
«pk» Id : intName : nvarchar(64)
Category
«pk» Id : intMark : nvarchar(8)LastName : nvarchar(32)FirstName: nvarchar(32)
Reader
«pk» Id : intProvidedOn : datetimeReturnedOn : datetime?
Loan«pk» Id : intAmount : moneyYear : intPaidOn : datetime
Payment
1
0..*
«fk» CategoryId
0..*1
«fk»PublicationId
«fk»ReaderId
0..*1
1
0..*
«fk» CopyId
«fk»ReaderId
10..*
«uq» Id : intRank : int
Authorship
«pk»«fk»AuthorId
0..*1 11..*«pk»«fk»
PublicationId
![Page 41: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/41.jpg)
Závislosti jednotlivých projektů
41
Access.DatabaseDomain
Client
Access
Logic
![Page 42: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/42.jpg)
DEMO 1
Projektová struktura
42
![Page 43: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/43.jpg)
Přístup přes Repository
Typově nespecifický přístup Zapouzdření CRUD a dotazů Implementuje IRepositoryProvider Třída Repository jako Singleton
43
![Page 44: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/44.jpg)
Přístup přes EntityBroker<T>
Typově specifický přístup Zapouzdření entitně-specifických dotazů Rozhraní IEntityBroker<T> Skeletální implementace IEntityBroker<T> Konkrétní třídy XxxBroker přístupné jako
Singleton
44
![Page 45: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/45.jpg)
DEMO 2
Repository, EntityBroker
45
![Page 46: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/46.jpg)
Implementace dekorátorů
Zabezpečení přístupu Logování změn Neinvazivní mazání záznamů
46
![Page 47: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/47.jpg)
DEMO 3
Implementace dekorátorů
47
![Page 48: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/48.jpg)
Jak na vícevláknový přístup
alokace SessionManageru dle přistupujícího vlákna
každé vlákno tak má k dispozici vlastní SessionManager
nutno řešit situaci, kdy se pracuje s transakcemi
48
![Page 49: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/49.jpg)
DEMO 4
Ošetření vícevláknového přístupu
49
![Page 50: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/50.jpg)
Shrnutí Tvorba datového modelu
konceptuální, doménový a relační model Vytvoření entitních tříd a mapování
preferována strategie Database First relační datové struktury jsou jednoznačné
Implementace Repository a dekorátorů zapouzdření datových služeb => modularita zabezpečení, mazání, auditing
Ošetření vícevláknového přístupu snadné použití např. v ASP.NET
50
![Page 51: Problematika datového přístupu v business aplikacích](https://reader035.vdocuments.net/reader035/viewer/2022070410/568145aa550346895db2a013/html5/thumbnails/51.jpg)
Závěr
Stručně o architektuře aplikací Požadavky na datový přístup Možnosti datového přístupu Ukázka řešení datového přístupu
Dotazy?
51