@GeneratedValue with strategy=GenerationType.IDENTITY in Hibernate
By Arvind Rai,
May 16, 2013
Hibernate
@GeneratedValue generates the value for the column of database table. In case of GenerationType. IDENTITY , value is set by table itself that should be unique. It is used as
@GeneratedValue(strategy=GenerationType.IDENTITY)
Find the example below.
EduCourse.java
package com.concretepage.persistence;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "edu_course")
public class EduCourse {
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@Column(name = "course_name")
private String courseName;
@Column(name = "duration")
private int duration;
public int getId() {
return id;
public void setId(int id) {
this.id = id;
public String getCourseName() {
return courseName;
public void setCourseName(String courseName) {
this.courseName = courseName;
public int getDuration() {
return duration;
public void setDuration(int duration) {
this.duration = duration;
HibernateUtil.java
package com.concretepage.util;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import com.concretepage.persistence.EduCourse;
public class HibernateUtil {
private static final SessionFactory concreteSessionFactory;
static {
try {
concreteSessionFactory = new AnnotationConfiguration().configure()
.buildSessionFactory();
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
public static Session getSession() throws HibernateException {
return concreteSessionFactory.openSession();
public static void main(String... args) {
Session session = getSession();
session.beginTransaction();
EduCourse course = new EduCourse();
course.setCourseName("B.Sc");
course.setDuration(3);
session.save(course);
session.getTransaction().commit();
session.close();
hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/hibernate</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.connection.pool_size">10</property>
<property name="show_sql">true</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping class="com.concretepage.persistence.EduCourse"/>
</session-factory>
</hibernate-configuration>
edu_course Table
CREATE TABLE `edu_course` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`course_name` VARCHAR(255) NULL DEFAULT NULL,
`duration` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;
About Us
We are a group of software developers.
We enjoy learning and sharing technologies.
To improve the site's content,
your valuable suggestions
are most welcome.
Thanks
Email :
[email protected]