Diff Between Java Hibernate JDBC
Diff Between Java Hibernate JDBC
Hibernate Vs JDBC
Author: Dipti Phutela, Mindfire Solutions
www.mindfiresolutions.com
-2-
Table of Contents
1. Introduction to JDBC...…………………………………………………………………………… 3
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.
2. JDBC Architecture
JDBC makes the interaction with RDBMS simple and intuitive. When a Java application needs to
access database:
• open connection to database,
• use JDBC driver to send SQL queries to database,
• process the results that are returned, and
• close the connection.
General steps:
1) Load the RDBMS specific JDBC driver because this driver actually communicates with the
database.
2) Open the connection to database which is then used to send SQL statements and get results
back.
3) Create JDBC Statement object. This object contains SQL query.
4) Execute statement which returns resultset(s). ResultSet contains the tuples of database table as a
result of SQL query.
5) Process the result set.
6) Close the connection.
/* execute statement */
ResultSet rs = stmt.executeQuery("SELECT * FROM Sells");
while ( rs.next() )
{
EmployeeBean eb = new Employeebean();
eb.setName(rs.getString("name"));
eb.setSalary(rs.getFloat("salary"));
employeeList.add(eb);
}
-5-
4. Introduction to Hibernate
5. Hibernate Architecture
Hibernate:
1) itself opens connection to database,
2) converts HQL (Hibernate Query Language) statements to database specific statement,
3) receives result set,
4) then performs mapping of these database specific data to Java objects which are directly used
by Java application.
Hibernate uses the database specification from Hibernate Properties file. Automatic mapping is
performed on the basis of the properties defined in hbm XML file defined for particular Java object.
-6-
6. Hibernate communication with RDBMS
General steps:
1. Load the Hibernate configuration file and create configuration object. It will automatically load
all hbm mapping files.
2. Create session factory from configuration object
3. Get one session from this session factory.
4. Create HQL query.
5. Execute query to get list containing Java objects.
/* create query */
Query query = session.createQuery("from EmployeeBean”);
EmployeeBean.hbm.xml File
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.mf.bean.EmployeeBean"
table="t_employee">
<property name="name">
<column name="name" />
</property>
<property name="salary">
<column name="salary" />
</property>
</class>
</hibernate-mapping>
-7-
7. JDBC Vs Hibernate
7.1 Why is Hibernate better than JDBC
2) Transparent Persistence
The automatic mapping of Java objects with database tables and vice versa is called Transparent
Persistence. 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 this conversion is to be taken care of by the developer manually with lines of code.
5) 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 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.
6) Optimize Performance
Caching is retention of data, usually in application to reduce disk access. 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
-8-
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.
4) Anybody wanting to maintain application using Hibernate will need to know Hibernate.
5) For complex data, mapping from Object-to-tables and vise versa reduces performance and
increases time of conversion.
6) Hibernate does not allow some type of queries which are supported by JDBC. For example It does
not allow to insert multiple objects (persistent data) to same table using single query. Developer
has to write separate query to insert each object.