Кіріспе

Компьютерлік деректер қорына абстрактілік интерфейс – бағдарламалық жасақтама дизайнының үлгісі. Бағдарламалық жасақтамада деректерге қол жеткізу объектісі (DAO) – қандай да бір деректер қорына немесе басқа да тұрақты сақтау механизміне абстрактілік интерфейс ұсынатын үлгі. Қолданба шақыруларын тұрақты сақтау қабатына бейімдеу арқылы DAO деректер базасының егжей-тегжейін жасыра отырып, деректермен жұмыс істеу операцияларын қамтамасыз етеді. Бұл оқшаулану жалғыз жауапкершілік принципін қолдайды. Ол қосымшаға қажетті деректерге қол жеткізуді, домендік объектілер мен деректер түрлері (DAO-ның ашық интерфейсі) және осы қажеттіліктерді нақты ДБСЖ (DAO-ның іске асырылуы) арқылы қанағаттандыруды бөліп көрсетеді. Бұл жобалау үлгісі көптеген бағдарламалау тілдеріне, деректерді сақтау қажеттілігі бар бағдарламалық жасақтамаларға және көптеген деректер қорына қолданылса да, дәстүрлі түрде Java EE қосымшаларымен және реляциялық деректер қорымен (JDBC API арқылы қол жетімді, себебі Sun Microsystems-тің «Core J2EE Patterns» ең жақсы тәжірибелік нұсқаулықтарында пайда болды) байланысты. Бұл объектіні 3-деңгейлі архитектураның деректерге қол жеткізу қабатында табуға болады. Бұл объектіні іске асырудың әртүрлі жолдары бар: әрбір кесте үшін бір DAO. Белгілі бір ДБСЖ-ның барлық кестелері үшін бір DAO. SELECT сұранысы тек мақсатты кестемен шектеледі және JOIN, UNION, ішкі сұраныстар мен ортақ кестелік өрнектерді (CTE) қамтымайды. SELECT сұранысы ДБСЖ рұқсат ететін кез келген нәрсені қамтуы мүмкін.

Артықшылықтар

Деректерге қол жеткізу объектілерін (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 сұранысы мақсатты кестеден басқа деректерге қолжеткізуге тыйым салынғанда ғана пайда болады екенін ескеріңіз.