@GeneratedValue with strategy=GenerationType.IDENTITY in Hibernate
May 16, 2013
@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)
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 { @Id @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;