Simple Hibernate Table Creation from Scratch
Step1: Create a Bean for which Table should be created in Database
Step2: Create a Class which uses the bean.
Step 1
package com.mugil.dto;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class UserDetails {
@Id
private int userId;
private String userName;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
Step 2
package com.mugil.access;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import com.mugil.dto.UserDetails;
public class CreateUser {
private static ServiceRegistry serviceRegistry;
private static SessionFactory sessionFactory;
public static void main(String[] args) {
UserDetails objUserDetail = new UserDetails();
objUserDetail.setUserId(101);
objUserDetail.setUserName("Mugil");
SessionFactory sessionFact = createSessionFactory();
Session session = sessionFact.openSession();
session.beginTransaction();
session.save(objUserDetail);
session.getTransaction().commit();
}
public static SessionFactory createSessionFactory() {
Configuration configuration = new Configuration();
configuration.configure();
serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
configuration.getProperties()).build();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
return sessionFactory;
}
}
In Some cases the hibernate.cfg.xml might become unrecognized.In such case the code should be changed to force the config to be picked from the file location.
public static SessionFactory createSessionFactory()
{
Configuration configuration = new Configuration().configure();
configuration.configure("hibernate.cfg.xml");
configuration.addAnnotatedClass(com.mugil.tutor.UserDetails.class);
serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
return sessionFactory;
}
Hibernate uses SessionFactory pattern internally as below
SessionFactory sessionFact = createSessionFactory(); Session session = sessionFact.openSession(); session.beginTransaction(); session.save(objUserDetail); session.getTransaction().commit();
1.Create Object for SessionFactory
2.Open Session to begin Transaction
3.Begin Transaction using beginTransaction() Method
4.Save the Object by Passing Object of the bean
5.Complete the Transaction using commit
Annotations
@Entity – Means entity as a whole>table would be created by the Name of the Entity
@Id – Tells the Primary Key
Having a Different table name from Class Name
Annotations
@Entity(name="User_Details")
public class Users
{
.
.
}
Table with User_Details would be created instead of Users
Having a Different Column name from Object Name
Annotations
@Entity(name="User_Details")
public class Users
{
@Id
@Column(name="USER_ID")
private String UserId;
.
.
}
Columns with User_Id would be created instead of UserId
Appending String to Getters
public void setName(String name)
{
Name = name + " Append Test ";
}
Appending String to Getters
@Entity
@Table (name="User_Details")
public class Users
{
}
The Entity Name Still remains the same but the table Name is different.
@Basic Annotation – Tells Hibernate to persist which it does by default
public class Users
{
@Basic
private String UserName;
.
.
}
@Basic has 2 Parameters – Fetch, optional. The only time you use @Basic is while applying the above options.
@Transient Annotation – Tells Hibernate to not store data in database
public class Users
{
@Transient
private String UserName;
.
.
}
@Temporal Annotation – Tells Hibernate to specify Date or Time
public class Users
{
@Temporal (TemporalType.Date)
private String joinedDate;
.
.
}
Without @Temporal the joinedDate is store along with TimeStamp in DB. Now using TemporalType(which is ENUM) you can select the type of data which can be stored in Database.
@Lob – Tells Hibernate to specify Date or Time
public class Users
{
@Lob
private String Address;
.
.
}
Tells the database field should be created as CLOB instead of VARCHAR(255).

Pingback: jesse