Maven 3 + Hibernate 3.6 + Oracle 11g Example (XML Mapping)

In this article, we show you how to integrate Maven3,  Hibernate3.6  and  Oracle11g  together. In the end of this article, you will create a Java project with Maven, and insert a record into Oracle database via Hibernate framework.

Tools & technologies used in this article :

  1. Maven 3.0.3
  2. JDK 1.6.0_13
  3. Hibernate 3.6.3.final
  4. Oracle 11g

1. Table Creation

Oracle SQL script to create a “DBUSER” table in database.

CREATE TABLE DBUSER ( 
  USER_ID       NUMBER (5)    NOT NULL, 
  USERNAME      VARCHAR2 (20)  NOT NULL, 
  CREATED_BY    VARCHAR2 (20)  NOT NULL, 
  CREATED_DATE  DATE          NOT NULL, 
  PRIMARY KEY ( USER_ID ) 
)
2. Create Project with Maven

Use Maven to create a standard project structure.

mvn archetype:generate -DgroupId=com.debdesk -DartifactId=HibernateExample 
-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Note
More detail, please refer to this How to create a Java project with Maven.

3. Maven to Eclipse IDE

Convert the generated Maven based project to Eclipse project, and import it into your Eclipse IDE.

mvn eclipse:eclipse

4. Add Hibernate and Oracle Dependency

Update your pom.xml file, and add all related dependencies.

  1. You need declared “JBoss repository” for the latest Hibernate jar and its dependency.
  2. For Oracle JDBC driver, you need to install it into your local maven repository manually.
For Oracle JDBC Driver
Read this guide – How to add Oracle JDBC driver in your Maven local repository

File : pom.xml



	4.0.0
	com.debdesk.common
	HibernateExample
	jar
	1.0
	HibernateExample
	http://maven.apache.org
	
	
		
			JBoss repository
			http://repository.jboss.org/nexus/content/groups/public/
		
	
	
		
			junit
			junit
			4.8.2
			test
		
		
		
			com.oracle
			ojdbc6
			11.2.0
		
		
			org.hibernate
			hibernate-core
			3.6.3.Final
		
		
			javassist
			javassist
			3.12.1.GA
		
	

5. Hibernate Mapping file (hbm) + Model

Create a Hibernate XML mapping file and Model class for table “DBUSER“.

– Create following “DBUser.hbm.xml” file and put it under “src/main/resources/com/debdesk/user“.

Note
Create the folder if it does not exists.

File : DBUser.hbm.xml

– Create a “DBUser.java” file and put it under “src/main/java/com/debdesk/user/

File : DBUser.java

package com.debdesk.user;

import java.util.Date;

/**
 * Dbuser generated by hbm2java
 */
public class DBUser implements java.io.Serializable {

	private int userId;
	private String username;
	private String createdBy;
	private Date createdDate;

	public DBUser() {
	}

	public DBUser(int userId, String username, String createdBy,
			Date createdDate) {
		this.userId = userId;
		this.username = username;
		this.createdBy = createdBy;
		this.createdDate = createdDate;
	}

	public int getUserId() {
		return this.userId;
	}

	public void setUserId(int userId) {
		this.userId = userId;
	}

	public String getUsername() {
		return this.username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getCreatedBy() {
		return this.createdBy;
	}

	public void setCreatedBy(String createdBy) {
		this.createdBy = createdBy;
	}

	public Date getCreatedDate() {
		return this.createdDate;
	}

	public void setCreatedDate(Date createdDate) {
		this.createdDate = createdDate;
	}

}

6. Hibernate Configuration File

Create a Hibernate configuration file “hibernate.cfg.xml” and put it under the root of resources folder, “src/main/resources/hibernate.cfg.xml“, and fill in your Oracle database details. And map to above Hibernate mapping file – “DBUser.hbm.xml“.

File : hibernate.cfg.xml




 
  oracle.jdbc.driver.OracleDriver
  jdbc:oracle:thin:@127.0.0.1:1521:DEBDESK
  debdesk
  password
  org.hibernate.dialect.Oracle10gDialect
  DEBDESK
  true
  


7. Hibernate Utility

Create a classic “HibernateUtil.java” class to take care of Hibernate session management. And put under “src/main/java/com/debdesk/util/HibernateUtil.java

File : HibernateUtil.java

package com.debdesk.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

	private static final SessionFactory sessionFactory = buildSessionFactory();

	private static SessionFactory buildSessionFactory() {
		try {
			// Create the SessionFactory from hibernate.cfg.xml
			return new Configuration().configure().buildSessionFactory();
		} catch (Throwable ex) {
			// Make sure you log the exception, as it might be swallowed
			System.err.println("Initial SessionFactory creation failed." + ex);
			throw new ExceptionInInitializerError(ex);
		}
	}

	public static SessionFactory getSessionFactory() {
		return sessionFactory;
	}

	public static void shutdown() {
		// Close caches and connection pools
		getSessionFactory().close();
	}

}

8. Review Final Project Structure

Review it, and your project structure should look like following :

9. Hibernate Coding

Update “App.java“, to code Hibernate to save a dummy user record into a table “DBUSER“.

File : App.java

package com.debdesk;

import java.util.Date;
import org.hibernate.Session;
import com.debdesk.util.HibernateUtil;
import com.debdesk.user.DBUser;

public class App {
	public static void main(String[] args) {
		System.out.println("Maven + Hibernate + Oracle");
		Session session = HibernateUtil.getSessionFactory().openSession();

		session.beginTransaction();
		DBUser user = new DBUser();

		user.setUserId(100);
		user.setUsername("superman");
		user.setCreatedBy("system");
		user.setCreatedDate(new Date());

		session.save(user);
		session.getTransaction().commit();
	}
}

10. Run It

Run your “App.java“, and see the output in Eclipse console view :

Done.

Reference

  1. Hibernate 3.6 documentation