Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.askme.dao; import com.askme.model.User; import java.util.List; import org.hibernate.SessionFactory; import org.hibernate.criterion.Projections; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; /** * * @author Administrator */ @Repository public class UserDAOImpl implements UserDAO { @Autowired private SessionFactory sessionFactory; @SuppressWarnings("unchecked") @Override public List<User> findAll() { return sessionFactory.getCurrentSession().createQuery("from User").list(); } @SuppressWarnings("unchecked") @Override public List<User> findLast(int limit) { return sessionFactory.getCurrentSession().createQuery("from User order by id desc").setMaxResults(limit) .list(); } @SuppressWarnings("unchecked") @Override public List<User> findTopPoint(int limit) { return sessionFactory.getCurrentSession().createQuery("from User order by point desc").setMaxResults(limit) .list(); } @SuppressWarnings("unchecked") @Override public User findById(int id) { return (User) sessionFactory.getCurrentSession().get(User.class, id); } @SuppressWarnings("unchecked") @Override public User findProfile(int id) { List<User> users = sessionFactory.getCurrentSession().createQuery( "select u from User u LEFT JOIN FETCH u.questions LEFT JOIN FETCH u.answers WHERE u.id = :id") .setParameter("id", id).list(); return (users.isEmpty()) ? null : users.get(0); } @SuppressWarnings("unchecked") @Override public User findByEmail(String email) { List<User> users = sessionFactory.getCurrentSession().createQuery("from User where email = :email") .setParameter("email", email).list(); return (users.isEmpty()) ? null : users.get(0); } @Override public Long countAll() { return (Long) sessionFactory.getCurrentSession().createCriteria(User.class) .setProjection(Projections.rowCount()).uniqueResult(); } @Override public void save(User user) { sessionFactory.getCurrentSession().save(user); } @Override public void update(User user) { sessionFactory.getCurrentSession().update(user); } @Override public void upPoint(User user, int point) { sessionFactory.getCurrentSession() .createQuery("update User u set u.point = u.point + :point where u.id = :id") .setParameter("point", point).setParameter("id", user.getId()).executeUpdate(); } @Override public void downPoint(User user, int point) { sessionFactory.getCurrentSession() .createQuery("update User u set u.point = u.point - :point where u.id = :id") .setParameter("point", point).setParameter("id", user.getId()).executeUpdate(); } @Override public void delete(User user) { sessionFactory.getCurrentSession().delete(user); } }