StudentDAOHibImpl.java
package com.sunilos.proj0.dao;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.sunilos.proj0.dto.StudentDTO;
/**
* Hibernate implementation of Student DAO.
*
* @author SunilOS
* @version 1.0
* @Copyright (c) SunilOS
*
*/
@Repository(value = "studentDao")
public class StudentDAOHibImpl implements StudentDAOInt {
@Autowired
private SessionFactory sessionFactory = null;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
/**
* Adds a Student
*/
public long add(StudentDTO dto) {
Session session = sessionFactory.getCurrentSession();
session.save(dto);
return dto.getId();
}
/**
* Updates a Student
*/
public long update(StudentDTO dto) {
Session session = sessionFactory.getCurrentSession();
session.update(dto);
return dto.getId();
}
/**
* Deletes a Student
*/
public void delete(long id) {
StudentDTO dto = findByPK(id);
Session session = sessionFactory.getCurrentSession();
session.delete(dto);
}
public StudentDTO findByEmail(String email) {
System.out.println("in findBy email");
StudentDTO dto = null;
Session session = sessionFactory.getCurrentSession();
Criteria criteria = session.createCriteria(StudentDTO.class);
List list = (List) criteria.add(Restrictions.eq("email", email)).list();
if (list.size() == 1) {
dto = (StudentDTO) list.get(0);
}
System.out.println("in finby email");
return dto;
}
public StudentDTO findByPK(long id) {
System.out.println("in DAO findBYPK before session");
Session session = sessionFactory.getCurrentSession();
System.out.println("in DAO findBYPK after session");
System.out.println("in DAO findByPK");
StudentDTO dto = (StudentDTO) session.get(StudentDTO.class, id);
System.out.println(dto.getFirstName());
return dto;
}
public List search(StudentDTO dto, int pageNo, int pageSize) {
System.out.println("DAO Search pagination");
List list = null;
Session session = sessionFactory.getCurrentSession();
Criteria criteria = session.createCriteria(StudentDTO.class);
if (dto != null) {
if (dto.getFirstName() != null && dto.getFirstName().length() > 0) {
criteria.add(Restrictions.like("firstName", dto.getFirstName()
+ "%"));
}
if (dto.getLastName() != null && dto.getLastName().length() > 0) {
criteria.add(Restrictions.like("lastName", dto.getLastName()
+ "%"));
}
if (dto.getDob() != null) {
criteria.add(Restrictions.eq("dob", dto.getDob()));
}
if (dto.getMobileNo() != null && dto.getMobileNo().length() > 0) {
criteria.add(Restrictions.eq("mobileNo", dto.getMobileNo()
+ "%"));
}
if (dto.getEmail() != null && dto.getEmail().length() > 0) {
criteria.add(Restrictions.like("email", dto.getEmail() + "%"));
}
}
// if page size is greater than zero the apply pagination
if (pageSize > 0) {
criteria.setFirstResult((pageNo - 1) * pageSize);
criteria.setMaxResults(pageSize);
}
System.out.println("after DAO Search pagination");
list = criteria.list();
System.out.println("after criteria");
return list;
}
public List search(StudentDTO dto) {
System.out.println("DAO Search");
return search(dto, 0, 0);
}
}