Кіріспе
Компьютерлік деректер қорына абстрактілік интерфейс – бағдарламалық жасақтама дизайнының үлгісі. Бағдарламалық жасақтамада деректерге қол жеткізу объектісі (DAO) – қандай да бір деректер қорына немесе басқа да тұрақты сақтау механизміне абстрактілік интерфейс ұсынатын үлгі. Қолданба шақыруларын тұрақты сақтау қабатына бейімдеу арқылы DAO деректер базасының егжей-тегжейін жасыра отырып, деректермен жұмыс істеу операцияларын қамтамасыз етеді. Бұл оқшаулану жалғыз жауапкершілік принципін қолдайды. Ол қосымшаға қажетті деректерге қол жеткізуді, домендік объектілер мен деректер түрлері (DAO-ның ашық интерфейсі) және осы қажеттіліктерді нақты ДБСЖ (DAO-ның іске асырылуы) арқылы қанағаттандыруды бөліп көрсетеді. Бұл жобалау үлгісі көптеген бағдарламалау тілдеріне, деректерді сақтау қажеттілігі бар бағдарламалық жасақтамаларға және көптеген деректер қорына қолданылса да, дәстүрлі түрде Java EE қосымшаларымен және реляциялық деректер қорымен (JDBC API арқылы қол жетімді, себебі Sun Microsystems-тің «Core J2EE Patterns» ең жақсы тәжірибелік нұсқаулықтарында пайда болды) байланысты. Бұл объектіні 3-деңгейлі архитектураның деректерге қол жеткізу қабатында табуға болады. Бұл объектіні іске асырудың әртүрлі жолдары бар: әрбір кесте үшін бір DAO. Белгілі бір ДБСЖ-ның барлық кестелері үшін бір DAO. SELECT сұранысы тек мақсатты кестемен шектеледі және JOIN, UNION, ішкі сұраныстар мен ортақ кестелік өрнектерді (CTE) қамтымайды. SELECT сұранысы ДБСЖ рұқсат ететін кез келген нәрсені қамтуы мүмкін.
the software design pattern
In software, a data access object (DAO) is a pattern that provides an abstract interface to some type of database or other persistence mechanism. By mapping application calls to the persistence layer, the DAO provides data operations without exposing database details. This isolation supports the single responsibility principle. It separates the data access the application needs, in terms of domain specific objects and data types (the DAO's public interface), from how these needs can be satisfied with a specific DBMS (the implementation of the DAO). Although this design pattern is applicable to most programming languages, most software with persistence needs, and most databases, it is traditionally associated with Java EE applications and with relational databases (accessed via the JDBC API because of its origin in Sun Microsystems' best practice guidelines "Core J2EE Patterns". This object can be found in the Data Access layer of the 3 Tier Architecture. There are various ways in which this object can be implemented:
One DAO for each table. One DAO for all the tables for a particular DBMS. Where the SELECT query is limited only to its target table and cannot incorporate JOINS, UNIONS, subqueries and Common Table Expressions (CTEs)
Where the SELECT query can contain anything that the DBMS allows.
Артықшылықтар
Деректерге қол жеткізу объектілерін (DAO) пайдалану айқын артықшылықты ұсынады: ол бір-бірі туралы білуі қажет емес екі қосымша бөлігін ажыратады. Бұл ажырату олардың тәуелсіз дамуына мүмкіндік береді. Бизнес-логика өзгерсе, ол тұрақты DAO интерфейсіне сүйене алады. Ал деректерді сақтау логикасына енгізілген өзгерістер DAO клиенттеріне әсер етпейді. Сақтаудың барлық егжей-тегжейі қосымшаның қалған бөлігінен жасырылады (ақпаратты жасыруға қараңыз). Тесттік кодты бірлікпен сынау, тестте DAO-ны тесттік макетпен алмастыру арқылы жеңілдетіледі, соның арқасында тесттер деректерді сақтау қабатынан тәуелсіз болады. Java бағдарламалау тілінде DAO әртүрлі тәсілдермен жүзеге асырылуы мүмкін. Бұл деректерге қол жеткізуді қосымша логикасынан бөлетін қарапайым интерфейстен бастап, фреймворктар мен коммерциялық өнімдерге дейін жетеді. Java Persistence API және Enterprise JavaBeans сияқты технологиялар Java EE қосымша серверін пайдаланатын қосымшаларда қолданылуы мүмкін. TopLink сияқты коммерциялық өнімдер объектілік-реляциялық бейнелеу (ORM) негізінде қол жетімді. Танымал ашық кодты ORM бағдарламалық қамтамасына Doctrine, Hibernate, iBATIS және Apache OpenJPA сияқты JPA жүзеге асырулары кіреді.
Кемшіліктер
DAO пайдаланудың ықтимал кемшіліктері: нашар абстракция, кодты дубликациялау және абстракция инверсиясы. Атап айтқанда, DAO-ны қарапайым Java нысаны ретінде абстракциялау әрбір дерекқорға қолжеткізудің жоғары құнын жасыруы мүмкін. Дамытушылар бір операцияда алына алатын ақпаратты алу үшін қателікпен бірнеше дерекқор сұраныстарын жасауы мүмкін. Егер қолданбаға бірнеше DAO қажет болса, әр DAO үшін бірдей жарату, оқу, жаңарту және жою кодын жазу қажет болуы мүмкін. Бұл кемшіліктер тек әр кесте үшін жеке DAO болғанда және SELECT сұранысы мақсатты кестеден басқа деректерге қолжеткізуге тыйым салынғанда ғана пайда болады екенін ескеріңіз.