RSS

Basic Introduction of Object Relational Mapping and HQL

01 Aug

Hi! At this moment, i will introduce basic understanding of ObjectRelational Mapping and Object-Oriented Based Query. Firstly i will discuss about ObjectRelational Mapping (ORM). ORM is a method that map all tables in a database into classes. So, if we have 3 tables, than we will have 3 classes. The benefits of ORM method is make your application ObjectOriented. The ORM has it’s own query. Somewhat called Objec-Oriented Based Query. Nowadays, There are 2 big main ObjectRelational Mapper Framework :

1. Hibernate Framework
2. JavaPersistence API

The Benefit of this query is , we don’t have to think native SQL that provided by the DBMS. For example, if you have a project that using MySQL and someday, your customer want to migrate it’s database to oracle, you don’t have to change ALL the query because the characteristics of this query is global. If you use native query, the changes are take so minimal. you don’t have to change the whole entire query.

Now, how does ORM works? Check this figure below :

Graphic1

Suppose we have 2 tables, employees and departments, Departments – Employees is OneToMany relationship. The ORM Framework will see these 2 tables and then convert these 2 tables then it would like something like this :

Conversion

Note that the 2 tables are converted into 2 classes. Two things you have to understand :
1. In Employee class, there is Department class. It means that Employee object HAS-A Department Object. For example, Hans Kristanto is Employee, and IT Department is Department. In old way, we will store the data in database with something like this :
-emp_id = 1
-emp_name = Hans Kristanto
-dept_id = 12 (Suppose 12 is ID of IT Department)
But with ORM way, The employee object store the whole of Department Object. So, the benefit will appear in query. We will discuss it further in HQL.

2. In Department class, there is a Collections with Generic of Employee. It means that the Department class store all Object that is related with Employee. For example, if we have 3 employees in dept-1 and 2 employees in dept-2, than the 3 employees would be stored in a collections which department name is dept-1 and same with the other one.

Note that all classes are filled with data during execution.

Hibernate Query Language

Hibernate Query Language is one of Object-Oriented Based Query. There are so many Object-Oriented Based Query such as JPQL and EJBQL. Not too different between these language.
Now, how to do a query in ORM? I will refresh it first. In the past, if we want to call all employee, we use this query :

SELECT * FROM employees

Now with HQL, we can use something like that, but more simpler and logically easier :

select e from employees e

The result will be Object of employees! You can print the name or the id or whatever by using native object oriented :

System.out.println("ID : "+e.getEmpId())
System.out.println("Name : "+e.getName())

Now the question, how to get the department name? When i use e.getDepartment(), the value printed is the HashCode object?

Don’t get panic. Since department in employee is an Object of Department class, you can call it’s name by using this :

System.out.println("Dept. Name : "+e.getDepartment().getDeptName())

Compare this way with native SQL :

SELECT e.emp_id, e.name, d.name FROM employees e, departments d WHERE e.dept_id = d.dept_id

whooo… a bit complicated… we don’t have anytime to do such a complicated things😀


Now, further query.. How about if we want to populate all employees whose department is 31 (Suppose dept 31 is Financial Department). There are 2 ways in creating query for this situation :

select e from employees e where e.department.deptId = '31'

OR

select e from employees e join e.department d where d.deptId = '31'

What is the different between theses query? NO, no significant different. Only in the second query, we give an alias in the join, while the first query not..

Okay, that’s all for the introduction. I’m preparing the tutorial in using Hibernate with Netbeans. So, stay tune here!

 
2 Comments

Posted by on August 1, 2009 in English, Programming

 

Tags: , , ,

2 responses to “Basic Introduction of Object Relational Mapping and HQL

  1. Mobile Dent Removal in Long Beach

    September 13, 2013 at 1:25 am

    Tim Shine auto care – salon mobil panggilan jakarta sebelum mencuci
    dengan shampoo, mobil di bilas dengan tangan untuk menghilangkan pasir dan debu sampai tidak berpasir baru di shampoo.
    As a locally-owned auto body shop for the repair.
    Are some infrared tube heaters for your body work repairs, then
    you can probably expect a poor service. Afterwards, you
    will find that auto body dent removal in cypress repairs.

     
  2. Mat J.

    November 4, 2016 at 12:50 pm

    Very shortly this web site will be famous among all blog people, due to it’s nice articles or reviews

     

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: