Monday, February 3, 2014

Hibernate / Get user data from DB

Get user data from DB using Hibernate Criteria.

Needded classes:
- HibernateUtil_c_users_DB .class
- hibernate-c_users.cfg.xml
- User.class
- UserDAO.class


HibernateUtil_c_users_DB.class

package util;

import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;


public class HibernateUtil_c_users_DB 
{
 private static SessionFactory sessionFactory;
 private static ServiceRegistry serviceRegistry;
 
 static
 {
  try 
  {
   Configuration configuration =  new Configuration().configure("hibernate-c_users.cfg.xml");
   serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
   sessionFactory = configuration.buildSessionFactory(serviceRegistry);
  }
  catch (HibernateException he)
        {
            System.err.println("Error creating Session: " + he);
            throw new ExceptionInInitializerError(he);
        }
 } 

 public static SessionFactory getSessionFactory() 
 {
  return sessionFactory;
 }

 public static void saveEntity(Object entity) 
 {
  Session session = HibernateUtil_c_users_DB.getSessionFactory().getCurrentSession();
  Transaction transaction = session.beginTransaction();
  session.save(entity);
  transaction.commit();
 }
 
 public static List getEntities(Class criteria) 
 {
  Session session = HibernateUtil_c_users_DB.getSessionFactory().getCurrentSession();
  Transaction transaction = session.beginTransaction();
  List result = session.createCriteria(criteria).list();
  transaction.commit();
  return result;
 }
}



hibernate-c_users.cfg.xml





 
  org.hibernate.dialect.MySQLDialect
  com.mysql.jdbc.Driver    
  jdbc:mysql://192.168.0.105:3306/c_users 
  root 
  
  thread
        false
        true
        validate
        org.hibernate.cache.internal.NoCacheProvider
        
        
        0
  3
  1
  50
  3000
                
        
     

 




User.class

@Entity
@Table(name="user")
public class User 
{
 @Id
 @GeneratedValue
 @Column(name="id", unique=true, nullable=false)
 private int id;
 
 @Column(name="login")
 private String login;
 
 @Column(name="password")
 private String password;
 
 @Column(name="name")
 private String name;
 
 @Column(name="surname")
 private String surname;

 
 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public String getLogin() {
  return login;
 }

 public void setLogin(String login) {
  this.login = login;
 }

 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public String getSurname() {
  return surname;
 }

 public void setSurname(String surname) {
  this.surname = surname;
 }
}



UserDAO.class

public class UserDAO 
{  
 public User getUserData(String login, String password)
 {
  User user = new User();  
  Session session = HibernateUtil_c_users_DB.getSessionFactory().openSession();
        
  session.beginTransaction();
                 
  Criteria criteria = session.createCriteria(User.class);
  criteria.add(Restrictions.eq("login", login));
  criteria.add(Restrictions.eq("password", password));
  
  user = (User) criteria.list().get(0);   
        
        session.getTransaction().commit();                       
        session.close();
  
  return user;
 }
}

No comments: