package cn.itcast.b_dao; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import cn.itcast.a_helloword.User; public class UserDao { private static SessionFactory sessionFactory; static { //讀取配置文件並生成Session工廠對象 Configuration cfg=new Configuration(); cfg.configure("hibernate.cfg.xml"); sessionFactory=cfg.buildSessionFactory(); } /** * 保存用戶 * @param user */ public void save(User user){ Session session=sessionFactory.openSession(); Transaction tx = null; try { tx=session.beginTransaction(); session.save(user);//更新 tx.commit(); } catch (RuntimeException e) { tx.rollback(); throw e; } finally{ session.close(); } } /** * 更新用戶 * @param user */ public void update(User user){ Session session=sessionFactory.openSession(); Transaction tx = null; try { tx=session.beginTransaction(); session.update(user);//保存 tx.commit(); } catch (RuntimeException e) { tx.rollback(); throw e; } finally{ session.close(); } } /** *獲取指定id的對象 * @param id * @return */ public User getById(int id){ Session session=sessionFactory.openSession(); Transaction tx=null; try { tx=session.beginTransaction(); User user = (User)session.get(User.class, id);//獲取 tx.commit(); return user; } catch (RuntimeException e) { tx.rollback(); throw e; }finally{ session.close(); } } /** * 刪除指定id的用戶 * * @param id */ public void delete(int id) { Session session = sessionFactory.openSession(); Transaction tx = null; try { tx = session.beginTransaction(); // ------------------------------------- Object user = session.get(User.class, id); // 先從數據庫獲取對象 session.delete(user); // 刪除的是實體對象 // ------------------------------------- tx.commit(); } catch (RuntimeException e) { tx.rollback(); throw e; } finally { session.close(); } } /** * 查詢全部 * @return */ public List<User> findAll(){ Session session = sessionFactory.openSession(); Transaction tx = null; try { tx=session.beginTransaction(); List<User> list = session.createQuery("FROM User").list();//使用H QL查詢 tx.commit(); return list; } catch (RuntimeException e) { tx.rollback(); throw e; } finally{ session.close(); } } /** * * @param firstResult * 開始獲取的記錄的索引 * @param maxResult * 最多獲取多少條數據 * @return 總記錄數+一段數據 */ public QueryResult<User> findAll(int firstResult,int maxResult){ Session session = sessionFactory.openSession(); Transaction tx = null; try { tx=session.beginTransaction(); //1.查詢總記錄數 Long count = (Long) session.createQuery( "SELECT COUNT(*) FROM User") .uniqueResult(); //執行查詢 //2. 查詢一段數據 Query query = session.createQuery("FROM User"); query.setFirstResult(firstResult); query.setMaxResults(maxResult); List<User> list = query.list(); tx.commit(); return new QueryResult<User>(list, count); } catch (RuntimeException e) { tx.rollback(); throw e; }finally{ session.close(); } } }數據庫 |