Friday 16 July 2010

What is JDBC

1.       What is jdbc?
Ans: it is a standard abstraction/interface/protocol for java application accessing tabular data store.
2.       What is tabular data store?
Ans: It is storage unit, which organizes the data into rows and columns (i.e: tables)
Example:
(1)    Data Base Servers
(2)    Oracle
(3)    SQL Servers
(4)    My Sql
(5)    Excel Documents
(6)    Comma separated values (CSV) FILES . i.e 001,rajendra,rajendra@yahoo.com,….
3.       Why java application access in the form of Tabular data store?
Ans: To manage persistence data: means the data that can outline the process in which it is created is known as persistent data.
Java serialization is one of the built in persistence mechanism.
4.       What is Java Serialization?
Ans:  Java Serialization is a built –in persistence mechanism of java for persisting the java object. This mechanism works by describing the state of the object into stream of bytes, which we can save to the file.
Note:  we can use a transient keyword of java to describe a stat member of an object to exclude from persisting the object by the java persistence mechanism.
5.       Why use Database server to persist the enterprise data?
Ans: we know that we have many types of datastores managing the persistence data which includes the tabular data stores database servers. But most of the enterprise applications works with the database server to persist there data because of the following reasons:
·         It implements lots of  challenges such as security, handling concurrent data access, and fast and reliable access of data which are required for most of the enterprises persistence data.
·         Also includes a convenient environment to access such data stores.
History of Accessing Tabular Data stores:
Persistance: an act of persisting the data.
Why jdbc?

Ans:  Simplifies creating data access layer of java enterprise applications.
Fig: Option-1

Basically Database servers include network protocols i.e Messaging Protocol and Transportation.
Accessing the Database server implementing the DATABASE  network PROTOCOLS:
The basic style of accessing the database server from our application could be, by implementing the data base network protocol.
However this includes lots of challenges:
·         Includes lots of low-level programming using threads and socket APIs.
·         Development and testing time and cost increases
·         Requires expert resources (i.e: Developers/testers)
·         Difficult/costlier for future extensions
·         Migration from one database to other requires lots of re-implementation which again time consuming and costlier.
·         The data base network protocols are intentionally not properly (detailed) documented, thus it becomes difficult to understand the protocols and implement the logic. Results to an application more errors prone.

Using DATA BASE Native Driver:
·         To solve the above listed problems data base vendors introduced the client component that can reside in the client process simplifying accessing the database server.
·         For example we have OCE (ORACLE CALL INTERFACE) from ORACLE DATABASE SERVER.
·         These components are generally referred as ‘Data Base Native Drivers’
·         The one major problem which is still existing with this approach is the application becomes vendor dependent. Thus migrating from one database to other still requires changes in the application.
Port means receiver or transmission
Upto now we discussed on two options to communicate with Data Base server.
Option 1:
is logic is implemented in Low level language which directly making calls to DATABASE SERVER.
Lets find the option-1:
This is good but has the following concerns:
1.       Makes the application tightly bounded to database i.e: Database dependent.
2.        Lots of low level logics to implement
3.       Understanding the database network protocol is difficult.
OPTION 2:
Is implemented logic in High level language, DATABASE API call to Database Vendor driver, DATABASE Vendor driver makes into Native calls to communicate to DATABASE SERVER
About Option-2:
Much better than option-1 but still has the following concerns:
1.       Still Database dependent
2.       As the database native drivers are generally in c-language (i.e Non-java) we need to create the java application using native methods (i.e: use JNI (Java Native Interface) which can have the following two effects:  (a) it can effect the platform Independantcy. (b) Any bug in the native code can crash the JVM.
JVM: is a system that provides system level services for java objects services means memory management etc.,
JRE:
Is a platform that provides runtime environment for java objects (or) JRE as java object container (describes runtime environment) . A initialized JVM, loaded with system libraries in JVM. A JVM instance loaded with all the system libraries in referred as JRE.
Next is OPTION 3: ODBC
V � s - M @S ly:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast {mso-style-priority:34; mso-style-unhide:no; mso-style-qformat:yes; mso-style-type:export-only; margin-top:0in; margin-right:0in; margin-bottom:10.0pt; margin-left:.5in; mso-add-space:auto; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} .MsoPapDefault {mso-style-type:export-only; margin-bottom:10.0pt; line-height:115%;} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.0in 1.0in 1.0in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:357395132; mso-list-type:hybrid; mso-list-template-ids:-490167928 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} @list l0:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in; font-family:Symbol;} @list l1 {mso-list-id:809712503; mso-list-type:hybrid; mso-list-template-ids:-144415500 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l1:level1 {mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in;} @list l2 {mso-list-id:970284142; mso-list-type:hybrid; mso-list-template-ids:-2135386332 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l2:level1 {mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in;} @list l3 {mso-list-id:1299922716; mso-list-type:hybrid; mso-list-template-ids:-862265710 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} @list l3:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in; font-family:Symbol;} ol {margin-bottom:0in;} ul {margin-bottom:0in;} -->
Basically Database servers include network protocols i.e Messaging Protocol and Transportation.
Accessing the Database server implementing the DATABASE  network PROTOCOLS:
The basic style of accessing the database server from our application could be, by implementing the data base network protocol.
However this includes lots of challenges:
·         Includes lots of low-level programming using threads and socket APIs.
·         Development and testing time and cost increases
·         Requires expert resources (i.e: Developers/testers)
·         Difficult/costlier for future extensions
·         Migration from one database to other requires lots of re-implementation which again time consuming and costlier.
·         The data base network protocols are intentionally not properly (detailed) documented, thus it becomes difficult to understand the protocols and implement the logic. Results to an application more errors prone.

Using DATA BASE Native Driver:
·         To solve the above listed problems data base vendors introduced the client component that can reside in the client process simplifying accessing the database server.
·         For example we have OCE (ORACLE CALL INTERFACE) from ORACLE DATABASE SERVER.
·         These components are generally referred as ‘Data Base Native Drivers’
·         The one major problem which is still existing with this approach is the application becomes vendor dependent. Thus migrating from one database to other still requires changes in the application.
Port means receiver or transmission
Upto now we discussed on two options to communicate with Data Base server.
Option 1:
is logic is implemented in Low level language which directly making calls to DATABASE SERVER.
Lets find the option-1:
This is good but has the following concerns:
1.       Makes the application tightly bounded to database i.e: Database dependent.
2.        Lots of low level logics to implement
3.       Understanding the database network protocol is difficult.
OPTION 2:
Is implemented logic in High level language, DATABASE API call to Database Vendor driver, DATABASE Vendor driver makes into Native calls to communicate to DATABASE SERVER
About Option-2:
Much better than option-1 but still has the following concerns:
1.       Still Database dependent
2.       As the database native drivers are generally in c-language (i.e Non-java) we need to create the java application using native methods (i.e: use JNI (Java Native Interface) which can have the following two effects:  (a) it can effect the platform Independantcy. (b) Any bug in the native code can crash the JVM.
JVM: is a system that provides system level services for java objects services means memory management etc.,
JRE:
Is a platform that provides runtime environment for java objects (or) JRE as java object container (describes runtime environment) . A initialized JVM, loaded with system libraries in JVM. A JVM instance loaded with all the system libraries in referred as JRE.
Next is OPTION 3: ODBC
h � n d M @S connectivity.html">ODBC (OPEN DATA BASE CONNECTIVITY)

V � s - M @S ly:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast {mso-style-priority:34; mso-style-unhide:no; mso-style-qformat:yes; mso-style-type:export-only; margin-top:0in; margin-right:0in; margin-bottom:10.0pt; margin-left:.5in; mso-add-space:auto; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} .MsoPapDefault {mso-style-type:export-only; margin-bottom:10.0pt; line-height:115%;} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.0in 1.0in 1.0in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:357395132; mso-list-type:hybrid; mso-list-template-ids:-490167928 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} @list l0:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in; font-family:Symbol;} @list l1 {mso-list-id:809712503; mso-list-type:hybrid; mso-list-template-ids:-144415500 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l1:level1 {mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in;} @list l2 {mso-list-id:970284142; mso-list-type:hybrid; mso-list-template-ids:-2135386332 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l2:level1 {mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in;} @list l3 {mso-list-id:1299922716; mso-list-type:hybrid; mso-list-template-ids:-862265710 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} @list l3:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in; font-family:Symbol;} ol {margin-bottom:0in;} ul {margin-bottom:0in;} -->
Basically Database servers include network protocols i.e Messaging Protocol and Transportation.
Accessing the Database server implementing the DATABASE  network PROTOCOLS:
The basic style of accessing the database server from our application could be, by implementing the data base network protocol.
However this includes lots of challenges:
·         Includes lots of low-level programming using threads and socket APIs.
·         Development and testing time and cost increases
·         Requires expert resources (i.e: Developers/testers)
·         Difficult/costlier for future extensions
·         Migration from one database to other requires lots of re-implementation which again time consuming and costlier.
·         The data base network protocols are intentionally not properly (detailed) documented, thus it becomes difficult to understand the protocols and implement the logic. Results to an application more errors prone.

Using DATA BASE Native Driver:
·         To solve the above listed problems data base vendors introduced the client component that can reside in the client process simplifying accessing the database server.
·         For example we have OCE (ORACLE CALL INTERFACE) from ORACLE DATABASE SERVER.
·         These components are generally referred as ‘Data Base Native Drivers’
·         The one major problem which is still existing with this approach is the application becomes vendor dependent. Thus migrating from one database to other still requires changes in the application.
Port means receiver or transmission
Upto now we discussed on two options to communicate with Data Base server.
Option 1:
is logic is implemented in Low level language which directly making calls to DATABASE SERVER.
Lets find the option-1:
This is good but has the following concerns:
1.       Makes the application tightly bounded to database i.e: Database dependent.
2.        Lots of low level logics to implement
3.       Understanding the database network protocol is difficult.
OPTION 2:
Is implemented logic in High level language, DATABASE API call to Database Vendor driver, DATABASE Vendor driver makes into Native calls to communicate to DATABASE SERVER
About Option-2:
Much better than option-1 but still has the following concerns:
1.       Still Database dependent
2.       As the database native drivers are generally in c-language (i.e Non-java) we need to create the java application using native methods (i.e: use JNI (Java Native Interface) which can have the following two effects:  (a) it can effect the platform Independantcy. (b) Any bug in the native code can crash the JVM.
JVM: is a system that provides system level services for java objects services means memory management etc.,
JRE:
Is a platform that provides runtime environment for java objects (or) JRE as java object container (describes runtime environment) . A initialized JVM, loaded with system libraries in JVM. A JVM instance loaded with all the system libraries in referred as JRE.
Next is OPTION 3: ODBC
ODBC (OPEN DATA BASE CONNECTIVITY)
V � s - M @S ly:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast {mso-style-priority:34; mso-style-unhide:no; mso-style-qformat:yes; mso-style-type:export-only; margin-top:0in; margin-right:0in; margin-bottom:10.0pt; margin-left:.5in; mso-add-space:auto; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} .MsoPapDefault {mso-style-type:export-only; margin-bottom:10.0pt; line-height:115%;} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.0in 1.0in 1.0in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:357395132; mso-list-type:hybrid; mso-list-template-ids:-490167928 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} @list l0:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in; font-family:Symbol;} @list l1 {mso-list-id:809712503; mso-list-type:hybrid; mso-list-template-ids:-144415500 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l1:level1 {mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in;} @list l2 {mso-list-id:970284142; mso-list-type:hybrid; mso-list-template-ids:-2135386332 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l2:level1 {mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in;} @list l3 {mso-list-id:1299922716; mso-list-type:hybrid; mso-list-template-ids:-862265710 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} @list l3:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:none; mso-level-number-position:left; text-indent:-.25in; font-family:Symbol;} ol {margin-bottom:0in;} ul {margin-bottom:0in;} -->
Basically Database servers include network protocols i.e Messaging Protocol and Transportation.
Accessing the Database server implementing the DATABASE  network PROTOCOLS:
The basic style of accessing the database server from our application could be, by implementing the data base network protocol.
However this includes lots of challenges:
·         Includes lots of low-level programming using threads and socket APIs.
·         Development and testing time and cost increases
·         Requires expert resources (i.e: Developers/testers)
·         Difficult/costlier for future extensions
·         Migration from one database to other requires lots of re-implementation which again time consuming and costlier.
·         The data base network protocols are intentionally not properly (detailed) documented, thus it becomes difficult to understand the protocols and implement the logic. Results to an application more errors prone.

Using DATA BASE Native Driver:
·         To solve the above listed problems data base vendors introduced the client component that can reside in the client process simplifying accessing the database server.
·         For example we have OCE (ORACLE CALL INTERFACE) from ORACLE DATABASE SERVER.
·         These components are generally referred as ‘Data Base Native Drivers’
·         The one major problem which is still existing with this approach is the application becomes vendor dependent. Thus migrating from one database to other still requires changes in the application.
Port means receiver or transmission
Upto now we discussed on two options to communicate with Data Base server.
Option 1:
is logic is implemented in Low level language which directly making calls to DATABASE SERVER.
Lets find the option-1:
This is good but has the following concerns:
1.       Makes the application tightly bounded to database i.e: Database dependent.
2.        Lots of low level logics to implement
3.       Understanding the database network protocol is difficult.
OPTION 2:
Is implemented logic in High level language, DATABASE API call to Database Vendor driver, DATABASE Vendor driver makes into Native calls to communicate to DATABASE SERVER
About Option-2:
Much better than option-1 but still has the following concerns:
1.       Still Database dependent
2.       As the database native drivers are generally in c-language (i.e Non-java) we need to create the java application using native methods (i.e: use JNI (Java Native Interface) which can have the following two effects:  (a) it can effect the platform Independantcy. (b) Any bug in the native code can crash the JVM.
JVM: is a system that provides system level services for java objects services means memory management etc.,
JRE:
Is a platform that provides runtime environment for java objects (or) JRE as java object container (describes runtime environment) . A initialized JVM, loaded with system libraries in JVM. A JVM instance loaded with all the system libraries in referred as JRE.
Next is OPTION 3: ODBC
ODBC (OPEN DATA BASE CONNECTIVITY)

No comments:

Post a Comment