Hibernate程序之实现功能(CRUD)

package cn.icss.b_dao;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtils {
    
    //SessionFactory只需要一个就可以了
    private static SessionFactory sessionFactory;
    
    static{
//        Configuration cfg = new Configuration();
//        cfg.configure();//读取默认的配置文件(hibernate.cfg.xml)
//        cfg.configure("hibernate.cfg.xml");//读取指定位置的配置文件
//        sessionFactory = cfg.buildSessionFactory();
        
        
        sessionFactory  = new Configuration()
                .configure()
                .buildSessionFactory();
    }
    
    /**
     * 获取全局唯一的SessionFactory
     */
    public static SessionFactory getSessionFactroy(){
        return sessionFactory;
    }
    
    /**
     * 从全局唯一的SessionFactory中打开一个session
     * @return
     */
    public static Session openSession(){
        return sessionFactory.openSession();
    }
    
}



======================

package cn.icss.b_dao;

import java.util.List;

public class QueryResult {
    
    private int count;//总记录数
    private List list;//一页的数据
    
    public QueryResult(int count, List list) {
        this.count = count;
        this.list = list;
    }
    
    public int getCount() {
        return count;
    }
    public void setCount(int count) {
        this.count = count;
    }
    public List getList() {
        return list;
    }
    public void setList(List list) {
        this.list = list;
    }
}


=================================

package cn.icss.b_dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import cn.icss.a_helloworld.User;

public class UserDao {
    
    public void save(User user){
        Session session = HibernateUtils.openSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            session.save(user);
            tx.commit();
            
        } catch (RuntimeException e) {
            tx.rollback();
            throw e;
        }finally{
            session.close();
        }
    }
    
    public void update(User user){
        Session session = HibernateUtils.openSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            //操作
            session.update(user);
            tx.commit();
            
        } catch (RuntimeException e) {
            tx.rollback();
            throw e;
        }finally{
            session.close();
        }
    }
    
    public void delete(Integer id){
        Session session = HibernateUtils.openSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            //操作
            User user = (User) session.get(User.class, id);
            session.delete(user);//删除的是实体对象
            tx.commit();
            
        } catch (RuntimeException e) {
            tx.rollback();
            throw e;
        }finally{
            session.close();
        }
    }
    
    public User getById(int id){
        Session session = HibernateUtils.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();
        }
    }
    
    //查询所有
    public List<User> findAll(){
        Session session = HibernateUtils.openSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            //操作
            List<User> list = session.createQuery(
                    "FROM User").list();
            tx.commit();
            return list;
            
        } catch (RuntimeException e) {
            tx.rollback();
            throw e;
        }finally{
            session.close();
        }
    }
    
    //分页(一页)
    public QueryResult findAll(int firstResult, int maxResults){
        Session session = HibernateUtils.openSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            //操作
//            方式一:
//            Query query = session.createQuery("FROM User");
//            query.setFirstResult(firstResult);
//            query.setMaxResults(maxResults);
//            List<User> list = query.list();
//            方式二:方法链
            List<User> list = session.createQuery("FROM User")
                    .setFirstResult(firstResult)
                    .setMaxResults(maxResults)
                    .list();
            
            //查询总记录数
//            session.createQuery("SELECT COUNT(*) FROM User").list().get(0);
            Long count = (Long) session.createQuery(
                    "SELECT COUNT(*) FROM User")
                    .uniqueResult();
            
            tx.commit();
            
            //返回结果
            return new QueryResult(count.intValue(), list);
        } catch (RuntimeException e) {
            tx.rollback();
            throw e;
        }finally{
            session.close();
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值