package bce.server.dao.hibernate; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.criterion.Restrictions; import bce.server.dao.AdminDAO; import bce.server.entities.PersistentAdmin; /** * 管理员实体类DAO的Hibernate实现 * * @author robins * */ public class AdminHibernateDAO implements AdminDAO { private SessionFactory factory; public void setFactory(SessionFactory factory) { this.factory = factory; } public AdminHibernateDAO() {} /* * (non-Javadoc) * @see bce.server.dao.AdminDAO#get(java.lang.Integer) */ @Override public PersistentAdmin get(Integer adminId) { Session session = factory.openSession(); return (PersistentAdmin) session.get(PersistentAdmin.class, adminId); } /* * (non-Javadoc) * @see bce.server.dao.AdminDAO#get(java.lang.String) */ @SuppressWarnings("unchecked") @Override public PersistentAdmin get(String adminName) { Session session = factory.openSession(); Criteria criteria = session.createCriteria(PersistentAdmin.class); criteria.add(Restrictions.eq("adminName", adminName)); List<PersistentAdmin> resultList = (List<PersistentAdmin>) criteria.list(); if (resultList.isEmpty()) return null; return resultList.get(0); } /* * (non-Javadoc) * @see bce.server.dao.AdminDAO#add(bce.server.entities.PersistentAdmin) */ @Override public void add(PersistentAdmin admin) { Session session = factory.openSession(); session.beginTransaction(); session.save(admin); session.getTransaction().commit(); if (session.isOpen()) session.close(); } /* * (non-Javadoc) * @see bce.server.dao.AdminDAO#update(bce.server.entities.PersistentAdmin) */ @Override public void update(PersistentAdmin admin) { Session session = factory.openSession(); session.beginTransaction(); session.update(session.merge(admin)); session.getTransaction().commit(); if (session.isOpen()) session.close(); } /* * (non-Javadoc) * @see bce.server.dao.AdminDAO#delete(bce.server.entities.PersistentAdmin) */ @Override public void delete(PersistentAdmin admin) { Session session = factory.openSession(); session.beginTransaction(); session.delete(session.merge(admin)); session.getTransaction().commit(); if (session.isOpen()) session.close(); } }