Вы находитесь на странице: 1из 21

Hibernate Framework

An ORM Tool
Hibernate Implementation Workshop
 Who should Attend
 Knowledge of SQL (Oracle / MySQL)
 Java developers who need to explore alternative methods of
persistence in Java applications.
 Saving data to a storage is called persistence.
 Programming with JDBC
 Environment Required
 Oracle 10g XE / MySQL
 Java Development Environment (JDK 5 or above)
 Hibernate Framework Libraries
 NetBeans 6 or above an IDE
Registration Case Study
 To demonstrate the different steps involved in a
Hibernate application
 We will develop an application that can add, update,
delete or search a user in the database.
 As discussed, we can use Oracle database for storing the
user information.
Setting up Database
 Oracle 10g XE is a free Relational Database
Management System based on the Structured Query
Language (SQL).
 It is very fast reliable and flexible Database
Management System based on relation model that is
developed to manage large volumes of data at very high
speed with security.
 Oracle 10g XE can be used for variety of applications
but it is one of the most popular RDBMS used for the
web applications on the Internet.
 Install Oracle 10g XE Database
 You can go to http://www.oracle.com/ and download and
Setting Up Database Contd..,
 Create an User “cec” with password “cec”
 We’ll use a single table ‘users’ to store the user
information with the following fields.
 The syntax for the oracle is given below.
Working with IDE
 NetBeans
 is an open-source integrated development environment written
entirely in Java.
 NetBeans IDE supports development of all Java application
types (Java SE, web, EJB and mobile applications).
 Download from http://java.sun.com
 Creating a Project
 Understanding Directory Structure
 Compiling
 Running a Project
Persistence in OO Applications
 When an application is developed, a major portion of
that application involves the creation and maintenance
of the data to store and retrieve from the database.
 Persistence: The ability of an object to remain in
existence past the lifetime of the program that creates it.
 The state of an object can be stored to a disc, and an
object with the same state can be re-created at some
point in future.
Persistence Implementation
 There are various ways the persistence layer can be
 Hard-coding with SQL/JDBC

(more development and maintenance efforts are required)

 XML Persistence

(just another text file; no capabilities for DB mgt. )

 Using Object Serialization

 Other Solutions  iBATIS, JDO, TopLink

 EJB 2.1 Entity Beans.

 EJB 3 with JPA

Programming with JDBC
 We create a project “WorkShop” in NetBeans and add
the Oracle JDBC driver to its Java build path.
 The location of that driver is
 JDBC Initialization and Cleanup
 Load the Driver
 Establish a connection
 Close the connection
Programming with JDBC contd..,
 Using JDBC to add a record in USERS table
 Use SQL statement in the respective statement object of
connection object.
connection.prepareStatement("INSERT INTO
users VALUES(?,?,?,?,?)");
 Set the values
pstatement.setInt(1, 1);
pstatement.setString(2, "Sarath");
pstatement.setString(3, "Chandra");
pstatement.setInt(4, 18);
pstatement.setString(5, "sara@t.com");
 Execute the statement
 Close the Statement
Programming with JDBC Contd..,
 Using JDBC to query database
 Use SQL statement in the respective statement object of
connection object.
connection.prepareStatement(“SELECT *
FROM users WHERE user_id = ?");
 Set the values
pstatement.setInt(1, 1);
 Execute the statement and assign the result in Resultset
ResultSet rs = pstatement.executeQuery();
 Retrieve data from resultset object
 Close the Statement
ORM - Object Relational Mapping
 In the previous sections, we have learned how to use
JDBC to access relational database.
 As widely known, Java is an Object-Oriented
programming language.
 We want to work with objects having behavior, not
rows and columns of data.
 Object-relational paradigm mismatch.
 That means we should use an “object model” to
represent our domain concepts.
Object Model
 Most of the enterprise applications are developed using Object
Oriented techniques.
 The business logic inside the application flows in the form of
 Only saving the objects to the database is a stage where the
objects are transformed to text and stored to the database.
 JavaBeans are used to build an object model.
 These JavaBeans are called “Plain Old Java Objects” (POJOs).
 These POJOs are called as “Persistent classes”.
POJO Programming Rules
 Implement a no-argument constructor.
 Provide properties with private modifier
 These properties maps to columns of a database table.
 Declare accessor methods i.e. setters and getters for
 Provide an identifier property (optional)
This property maps to the primary key column of a database table
 Create a POJO called “Users” i.e. Users Class with POJO Rules,
and we need to store this object to the database.
Persistence Class
public String getFirstName() {
public class Users {
public Users() { }
return firstName;
private int userId;
private String firstName; public void setFirstName(String firstName)
private String lastName; {
private int age; this.firstName = firstName;
private String emailId; }
public int getAge() {
return age; public String getLastName() {
} return lastName;
public void setAge(int age) { }
this.age = age;
} public void setLastName(String lastName) {
this.lastName = lastName;
public String getEmailId() {
return emailId;
} public int getUserId() {
public void setEmailId(String emailId) { return userId;
this.emailId = emailId; }
} public void setUserId(int userId) {
this.userId = userId;
Business Component
 Write a business component that can perform different
operations on the User object, such as
 Insert
 Update
 Delete
 Retrieve
Business Component Class
public class UserManager {
private Connection openConnection() throws Exception {
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "cec",
return con;
public void cleanup(Connection con, PreparedStatement ps, ResultSet rs) {
try {
if(rs != null) rs.close();
if(ps != null) ps.close();
if(con != null) con.close();
} catch (Exception e) { }

public void saveUser(Users user) throws Exception {

Connection con = openConnection();
PreparedStatement ps = con.prepareStatement("INSERT INTO users VALUES(?,?,?,?,?)");
ps.setInt(1, user.getUserId());
ps.setString(2, user.getFirstName());
ps.setString(3, user.getLastName());
ps.setInt(4, user.getAge());
ps.setString(5, user.getEmailId());
Business Component Contd..,
public Users getUser(Users user) throws Exception {
Users u = null;
Connection con = openConnection();
PreparedStatement ps =
con.prepareStatement("Select * from USERS where user_id = ?");
ps.setInt(1, user.getUserId());
ResultSet rs = ps.executeQuery();
if(rs.next()) {
u = new Users();
cleanup(con, ps, rs);
return u;
Testing the application
UserManager manager = new UserManager();

Users user = new Users();


user = manager.getUser(user);
System.out.println("Name >>> " +
user.getFirstName() + " " + user.getLastName());
Problems with JDBC Code
 Too many SQL statements
Using JDBC means you can execute any kind of SQL statements.

For a simple task, you have to code many SELECT, INSERT,

UPDATE, DELETE statements repeatedly.
 Too many copy codes
When you perform object retrieval, you need to copy the fields in
a ResultSet to the properties of an object. When you perform
object persistence, you need to copy the properties of an object to
the parameters in PreparedStatement.
 Due to these problems, bug fixing is an accepted stage of an
application development process which makes the application too
expensive even after the successful completion of development
ORM Tools
 As discussed above, ORM Tools provides data storage
and retrieval by direct mapping of Object and Relation
without letting the application developer worry about
the persistence logic.
 The most popular ORM Tool is HIBERNATE.
 Hibernate Goals are
 Do less work and have a happy DBA.
 No error prone JDBC code is required.
 No manual handling of JDBC ResultSet
 No Object Conversion
 No hard coded SQL
 No Value Object Design Pattern