ZAWWW-2st1.2-w11.tresc-1.0-Slajd37
Data Access Object
Aplikacje webowe czerpią swoje dane z wielu różnych repozytoriów. Najczęściej są to rzecz jasna relacyjne bazy danych, ale mogą to być również pliki tekstowe, repozytoria XML, obiektowe bazy danych, repozytoria LDAP, systemy integracyjne B2B, usługi autoryzacji kart kredytowych, i wiele innych. Każdy typ źródła danych posiada własny interfejs i specyfikę. Umieszczanie kodu dostępu do danych razem z logiką aplikacji wprowadza duże zamieszanie, wymusza obsługę wyjątków specyficznych dla dostępu do danych w kodzie aplikacji oraz silnie wiąże warstwy aplikacji. Zaleca się więc wprowadzanie dodatkowej warstwy hermetyzującej wszystkie aspekty dostępu do danych. Uzyskujemy dzięki temu wyraźną separację warstwy danych od reszty aplikacji oraz jednolity interfejs dostępu do danych przechowywanych w wielu różnych źródłach danych. Takie rozwiązanie promuje wzorzec projektowy Data Access Object. Najczęstszą implementacją wzorca Data Access Object jest pisana ręcznie klasa Java zawierająca kod dostępu do danych, choć niektóre architektury szkieletowe dostarczają gotowych implementacji wzorca Data Access Object, dobrym przykładem jest klasa JdbcTemplate z architektury Spring Framework. Dodatkową zaletą zastosowania wzorca Data Access Object jest ukrycie przed aplikacją schematów danych, co umożliwia łatwą i elastyczną pielęgnację i ewolucję schematów danych.