Кіріспе
Java бағдарламасының деректер базасымен өзара әрекеттесуіне мүмкіндік беретін бағдарламалық компонент – JDBC драйвері. JDBC драйверлері ODBC драйверлеріне, ADO.NET дерек жеткізушілеріне және OLE DB дерек жеткізушілеріне ұқсас. Әрбір деректер базасына қосылу үшін JDBC (Java Database Connectivity API) әр деректер базасы үшін драйверлерді қажет етеді. JDBC драйвері деректер базасына қосылымды қамтамасыз етеді және клиент пен деректер базасы арасында сұраныс пен нәтижелерді алмасу протоколын іске асырады. JDBC технологиясының драйверлері төрт санатқа бөлінеді: JDBC ODBC көпірі, Native API драйвері, Желілік протокол драйвері (Middleware драйвері), Деректер базасының протоколы драйвері (Pure Java драйвері) немесе жұқа драйвер.
A JDBC driver is a software component enabling a Java application to interact with a database. JDBC drivers are analogous to ODBC drivers, ADO. NET data providers, and OLE DB providers. To connect with individual databases, JDBC (the Java Database Connectivity API) requires drivers for each database. The JDBC driver gives out the connection to the database and implements the protocol for transferring the query and result between client and database. JDBC technology drivers fit into one of four categories. JDBC ODBC bridge
Native API driver
Network Protocol driver (Middleware driver)
Database Protocol driver (Pure Java driver) or thin driver.
1-түрдегі драйвер JDBC-ODBC көпір
JDBC 1-түрлі драйвері, сондай-ақ JDBC ODBC көпірі деп аталады, дерекқорына қосылу үшін ODBC драйверін пайдаланатын dbase драйверінің іске асырылуы болып табылады. Драйвер JDBC әдіс шақыруларын ODBC функция шақыруларына түрлендіреді. Драйвер платформаға тәуелді, себебі ол ODBC-ді пайдаланады, ал ол өз кезегінде JVM іске қосылған негізгі операциялық жүйенің тума кітапханаларына тәуелді. Сондай-ақ, осы драйверді пайдалану қосымша орнату тәуелділіктерін тудырады; мысалы, ODBC драйвері орнатылған компьютерде орнатылуы керек және дерекқоры ODBC драйверін қолдауы тиіс. Таза Java драйверінің баламасы болған жағдайда, осы драйверді пайдалану ұсынылмайды. Тағы бір мәселе – 1-түрлі драйверді пайдаланатын кез келген қосымша драйвер мен платформа арасындағы байланысқа байланысты портативті емес. Бұл технология жоғары транзакциялық орта үшін қолайлы емес. 1-түрлі драйверлер Java командалар жиынтығын толыққанды қолдамайды және ODBC драйверінің мүмкіндіктерімен шектеледі. Sun (қазір Oracle) JDBC ODBC Bridge драйверін ұсынды: sun.jdbc.odbc.JdbcOdbcDriver. Бұл драйвер Java емес, жергілікті кодтан жасалған және жабық кодты құрайды. Sun/Oracle JDBC ODBC Bridge Java 8 нұсқасында алынып тасталды (басқа жеткізушілердің драйверлері бар). Егер драйверді жүктеу оның бір данасын жасап, содан кейін сол дананы параметр ретінде DriverManager.registerDriver шақыруына себеп болса, онда ол DriverManager драйверлер тізімінде болады және қосылымды жасау үшін қолжетімді болады. Кейде бірнеше JDBC драйвері белгілі бір URL-ге қосылуға қабілетті болуы мүмкін. Мысалы, қашықтағы дерекқорға қосылғанда, JDBC ODBC Bridge драйверін, JDBC-ге арналған жалпы желілік протокол драйверін немесе дерекқор жеткізушісі ұсынған драйверді пайдалануға болады. Мұндай жағдайларда драйверлерді сынау реті маңызды, өйткені DriverManager берілген URL-ге сәтті қосыла алатын алғашқы драйверді пайдаланады. Біріншіден, DriverManager тіркелген ретімен әрбір драйверді пайдалануға тырысады. (jdbc.drivers тізіміндегі драйверлер әрқашан бірінші болып тіркеледі.) Егер код сенімсіз болса және оны қосылымды ашуға тырысатын кодпен бірдей көзден жүктемесе, ол драйверлерді өткізіп жібереді. Ол әр драйверге Driver.connect әдісін шақыру арқылы сынақтан өткізеді, содан кейін пайдаланушының бастапқыда DriverManager.getConnection әдісіне берген URL-ді жібереді. URL-ді бірінші таныған драйвер қосылымды жасайды.
Артықшылықтар
ODBC драйвері орнатылған дерлік кез келген деректер базасына қол жеткізу мүмкін, және деректерді алуға болады.
Кемшіліктер
Жұмыстың төмендеуіне себеп, шақырулар JDBC (Java дерекқоры қосылымы) көпірі арқылы ODBC (ашық дерекқоры қосылымы) драйверіне, содан кейін жергілікті дерекқоры қосылымы интерфейсіне өтуі керек (сол себепті басқа драйверлерге қарағанда баяу жұмыс істеуі мүмкін). ODBC драйвері клиенттік машинаға орнатылуы тиіс. Апплеттер үшін қолайсыз, себебі ODBC драйверін клиентке орнату қажет. Көптеген платформаларда ODBC драйверлерінің арнайы нұсқалары қолжетімді болмауы мүмкін, сондықтан бұл драйвердің тасымалдану мүмкіндігі шектеулі. JDK 1.8 (Java 8) нұсқасы қолдау көрсетпейді.
2-түрдегі драйвер Native-API драйвері
JDBC 2-түрлі драйвері, сонымен қатар Native API драйвері деп те аталады, дерекқорының клиенттік кітапханаларын пайдаланатын дерекқоры драйверінің іске асырылуы болып табылады. Драйвер JDBC әдіс шақыруларын дерекқоры API-сының түпкілікті шақыруларына түрлендіреді. Мысалы: Oracle OCI драйвері 2-түрлі драйвер болып табылады.
Артықшылықтар
JDBC ODBC көпірі іске асырылмағандықтан, ол 1-типті драйверден едәуір жылдам болуы мүмкін.
Кемшіліктер
Клиенттік компьютерде сатушының клиенттік кітапханасын орнату қажет. Барлық дерекқорызда клиенттік кітапхана болмайды. Бұл драйвер платформаға тәуелді. Бұл драйвер апплеттерден басқа барлық Java қолданбаларын қолдайды.
3-түрлі драйвер Желілік протокол драйвері (орталық бағдарламалық қамтамасыз ету драйвері)
JDBC 3-түрлі драйвері, сонымен қатар деректер қорының орталық бағдарламасына арналған таза Java драйвері ретінде де танылады, шақырушы бағдарлама мен деректер қоры арасындағы ортаңғы қабатты пайдаланатын деректер қоры драйверінің іске асырылуы болып табылады. Ортаңғы қабат (өтінім сервері) JDBC шақыруларын тікелей немесе жанама түрде деректер қорының вендорға тән протоколына түрлендіреді. Бұл 4-түрлі драйверден айырмашылығы бар, себебі протокол түрлендіру логикасы клиентте емес, ортаңғы қабатта орналасқан. 4-түрлі драйверлер сияқты, 3-түрлі драйвер де толығымен Java тілінде жазылған. Бір клиенттік JDBC драйверін бірнеше деректер қоры үшін пайдалануға болады. Бұл орталық бағдарламалық жасақтаманың қанша деректер қорын қолдауға конфигурацияланғанына байланысты. 3-түрлі драйвер платформаға тәуелсіз, өйткені платформаға қатысты айырмашылықтар орталық бағдарламалық жасақтамамен шешіледі. Сонымен қатар, орталық бағдарламалық жасақтаманы пайдалану қауіпсіздік және қауіпсіздік қабырғасы арқылы қол жеткізудің қосымша мүмкіндіктерін ұсынады.
Функциялар
JDBC API шақыруларын деректерді басқару жүйесіне (DBMS) тән желілік протоколға аударатын орта деңгейлі желілік серверге жібереді. Аударылған шақырулар нақты бір деректерді басқару жүйесіне (DBMS) жіберіледі. Үш деңгейлі байланыс тәсілі қолданылады. Көптеген деректер базасына қосыла алады – нақты өндірушіге тәуелді емес. Java тілінде жазылған JDBC клиент драйвері деректер базасынан тәуелсіз протокол арқылы орталық желілік сервермен байланысады, ал бұл желілік сервер бұл сұранысты сол деректер базасы үшін деректер базасы командаларына аударады. Осылайша, клиент драйвері мен орталық бағдарламалық қамтамасыз ету арасындағы байланыс деректер базасынан тәуелсіз болады.
Артықшылықтар
Клиент пен мидл-ап сервері арасындағы байланыс дерекқордан тәуелсіз болғандықтан, клиентке дерекқор жеткізушісінің кітапханасы қажет емес. Клиентті жаңа дерекқор үшін өзгертудің қажеті жоқ. Мидлверлік сервер (толыққанды J2EE қосымша сервері болуы мүмкін) кэштеу (қосылымдар, сұраныс нәтижелері және т.б.), жүктемені бөлу, журналға жазу және аудиттеу сияқты стандартты мидлверлік қызметтерді ұсынуы мүмкін. Мидлверлік бағдарлама қолдаса, бір драйвер кез келген дерекқорды басқара алады. Мысалы: IDA сервері.
Кемшіліктер
Ортаңғы қабатта дерекқорына қатысты кодтау жұмыстарын жүргізу қажет. Орталық бағдарламалық қамтамасыз ету қабатының қосылуы қосымша кешігуге алып келуі мүмкін, бірақ көбінесе жақсырақ орталық бағдарламалық қамтамасыз ету қызметтерін пайдалану арқылы осы мәселе шешіледі.
4-түрді драйвер Деректер қорының протоколы драйвері/Тин драйвері (таза Java драйвері)
JDBC 4-түрлі драйвері, сондай-ақ Direct to Database Pure Java Driver деп аталатын, JDBC шақыруларын тікелей дерекқордың өндірушіге тән протоколына түрлендіретін дерекқор драйверінің іске асырылуы болып табылады. Толығымен Java тілінде жазылғандықтан, 4-түрлі драйверлер платформаға тәуелсіз. Олар клиенттің Java виртуалды машинасына орнатылады. Бұл, 1- және 2-түрлі драйверлерге қарағанда жақсы өнімділікті қамтамасыз етеді, себебі ол шақыруларды ODBC немесе дерекқор API шақыруларына түрлендіруге байланысты қосымша жүктемеден құтылады. 3-түрлі драйверлерден өзгеше, оның жұмыс істеуі үшін қосымша бағдарламалық құралдар қажет емес. Дерекқор протоколы өндірушіге тән болғандықтан, JDBC клиенті әртүрлі типтегі дерекқорларға қосылу үшін әдетте өндіруші ұсынатын жеке драйверлерді қажет етеді.
Артықшылықтар
Java-да платформа тәуелсіздігін қамтамасыз ету үшін толыққанды жүзеге асырылған. Бұл драйверлер сұрауларды аралық форматқа (мысалы, ODBC) түрлендірмейді. Клиенттік қолданба деректер қоры серверіне тікелей қосылады. Орындалу жылдамдығын арттыру мақсатында аударма немесе делдалдық қабаттар қолданылмайды. JVM қолданбаның деректер базасына қосылуының барлық аспектілерін басқара алады, бұл қателерді жою процесін жеңілдетеді.
Кемшіліктер
Драйверлер дерекқорына қатысты, себебі әртүрлі дерекқор жеткізушілер мүлдем әртүрлі (көбінесе меншік) желілік протоколдарды пайдаланады.