JDBC
stands for Java Database Connectivity allows developers to connect, query and
update a database using the Structured Query Language. JDBC API standard
provides Java developers to interact with different RDBMS and access table data
through Java application without learning RDBMS details and using Database
Specific JDBC Drivers.
Hibernate
is an Object-Relational Mapping (ORM) solution for JAVA. It is a powerful, high
performance object/relational persistence and query service. It allows us to
develop persistent classes following object-oriented idiom – including
association, inheritance and polymorphism.
Listed below is the
comparison chart of difference beetween JDBC and Hibernate
Hibernate
|
JDBC
|
Slower than JDBC and
not used for Batch Processing.
|
Faster than
Hibernate and used for Batch Processing.
|
Hibernate is
Database Independent
|
JDBC query must be database specific
|
Criteria Query take care of Query Tuning.
|
JDBC you need to tune your queries.
|
Hibernate Supports two level of cache, you can store data into catch
for better performance
|
in JDBC you need to implement your java cache.
|
Hibernate supports Query cache and It will provide the statistics
about your query and database status.
|
JDBC Not provides any statistics.
|
No need to create any connection pool in case of Hibernate. You can
use c3p0.
|
In JDBC you need to write your own connection pool
|
Hibernate Supports automatic versioning of rows
|
JDBC Not.
|
You can load your objects on start up using lazy=false in case of
Hibernate.
|
JDBC Don't have such support.
|
In the xml file you can see all the relations between tables in case
of Hibernate. Easy readability.
|
JDBC Not.
|
Hibernate is
flexible and powerful ORM solution to map Java classes to database tables.
Hibernate itself takes care of this mapping using XML files so developer does
not need to write code for this.
|
With JDBC,
developer has to write code to map an object model's data representation to a
relational data model and its corresponding database schema.
|
Hibernate
provides transparent persistence and developer does not need to write code
explicitly to map database tables tuples to application objects during
interaction with RDBMS.
|
With JDBC, the
automatic mapping of Java objects with database tables and vice versa
conversion is to be taken care of by the developer manually with lines of
code.
|
Hibernate
provides a powerful query language Hibernate Query Language (independent from
type of database) that is expressed in a familiar SQL like syntax and
includes full support for polymorphic queries. Hibernate also supports native
SQL statements. It also selects an effective way to perform a database
manipulation task for an application.
|
JDBC supports
only native Structured Query Language (SQL). Developer has to find out the
efficient way to access database, i.e. to select effective query from a
number of queries to perform same task.
|
Hibernate
provides this mapping itself. The actual mapping between tables and
application objects is done in XML files. If there is change in Database or
in any table then the only need to change XML file properties.
|
Application using
JDBC to handle persistent data (database tables) having database specific
code in large amount. The code written to map table data to application
objects and vice versa is actually to map table fields to object properties.
As table changed or database changed then it’s essential to change object
structure as well as to change code written to map
table-to-object/object-to-table.
|
Hibernate reduces
lines of code by maintaining object-table mapping itself and returns result
to application in form of Java objects. It relieves programmer from manual
handling of persistent data, hence reducing the development time and
maintenance cost.
|
With JDBC, it is
developer’s responsibility to handle JDBC result set and convert it to Java
objects through code to use this persistent data in application. So with
JDBC, mapping between Java objects and database tables is done manually.
|
Hibernate, with
Transparent Persistence, cache is set to application work space. Relational
tuples are moved to this cache as a result of query. It improves performance
if client application reads same data many times for same write. Automatic
Transparent Persistence allows the developer to concentrate more on business
logic rather than this application code.
|
With JDBC,
caching is maintained by hand-coding.
|
Hibernate enables
developer to define version type field to application, due to this defined
field Hibernate updates version field of database table every time relational
tuple is updated in form of Java class object to that table. So if two users
retrieve same tuple and then modify it and one user save this modified tuple
to database, version is automatically updated for this tuple by Hibernate.
When other user tries to save updated tuple to database then it does not
allow saving it because this user does not have updated data.
|
In JDBC there is
no check that always every user has updated data. This check has to be added
by the developer.
|
0 comments :