Data Access Object
Data Access Object – obiekt dostępu do danych — abstrakcja źródła danych; komponent dostarczający jednolity interfejs do komunikacji między aplikacją a źródłem danych (np. bazą danych czy plikiem)[1]. Jest często łączony z innymi wzorcami projektowymi. DAO jest obiektem odwzorowującym źródło danych, enkapsulującym wszystkie dane przesyłane do i ze źródła[1]. Dzięki DAO, aplikacja nie musi znać sposobu oraz ostatecznego miejsca składowania swoich danych, a ewentualne modyfikacje któregoś z czynników nie pociągają za sobą konieczności modyfikowania jej kodu źródłowego[2]. Komponent ten jest często stosowany w modelu MVC (Model-View-Controller) do oddzielenia dostępu do danych od logiki biznesowej i warstwy prezentacji[3]. Gotowe narzędzia do korzystania z DAO wchodzą w skład wielu popularnych języków programowania oraz platform (np. Java EE, Ruby on Rails).
Wydajność
Dodanie DAO do aplikacji powoduje pojawienie się kolejnej warstwy interfejsu oraz zwiększenie ilości kodu, który musi zostać wykonany do realizacji dostępu do danych. Z tego powodu w aplikacjach, dla których wydajność ma krytyczne znaczenie, rezygnuje się z DAO, aby zapewnić jak najszybsze działanie aplikacji.
Przypisy
- ↑ a b Mauricio F. Aniche , Gustavo A. Oliva , Marco A. Gerosa , Are the Methods in Your Data Access Objects (DAOs) in the Right Place? A Preliminary Study, IEEE, wrzesień 2014, s. 47–50, DOI: 10.1109/MTD.2014.14, ISBN 978-1-4799-6791-9 [dostęp 2024-07-19] .
- ↑ Christine Mayr , Uwe Zdun , Schahram Dustdar , Model-Driven Integration and Management of Data Access Objects in Process-Driven SOAs, Petri Mähönen, Klaus Pohl, Thierry Priol (red.), Berlin, Heidelberg: Springer, 2008, s. 62–73, DOI: 10.1007/978-3-540-89897-9_6, ISBN 978-3-540-89897-9 [dostęp 2024-07-19] (ang.).
- ↑ Maurício Aniche , Gabriele Bavota , Christoph Treude , Marco Aurélio Gerosa , Arie van Deursen , Code smells for Model-View-Controller architectures, „Empirical Software Engineering”, 23 (4), 2018, s. 2121–2157, DOI: 10.1007/s10664-017-9540-2, ISSN 1573-7616 [dostęp 2024-07-19] (ang.).