Hibernate 抽取工具类 实现简单的增、删、改、查操作

一、HibernateUtils.class

public class HibernateUtils {
	public static final Configuration cfg;
	public static final SessionFactory sf;
	
	static{
		cfg = new Configuration().configure();
		sf = cfg.buildSessionFactory();
	}
	
	public static Session openSession(){
		return sf.openSession();
	}
	/*用了此方法,session不用关闭,getCurrentSession是线程实现*/
	public static Session getCurrentSession(){
		return sf.getCurrentSession();
	}
}

二、增(save)、删(delete)、改(update)、查(get、load)、保存更新(saveOrUpdate)等操作。

 固定形式:

Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
/*要执行的操作*/
tx.commit();
session.close();

例如:插入一条记录。

    public void demo(){
        /*session不是线程安全,不能设置它为全局对象*/
        Session session = HibernateUtils.openSession();//获取Session对象
        Transaction tx = session.beginTransaction();//开启事务
        Customer customer  = new Customer();
        customer.setCust_name("小明");
        Serializable id = session.save(customer);
        tx.commit();
        session.close();
    }

三、hibernate  利用Query Criteria 实现简单查询、条件查询、分页查询

             注:这里面所用查询的SQL是属于Hibernate面对象的查询语句,如要实现更为复杂的查询应使用SQLQuery

                a.   Query 使用Query对象,不需要写sql语句,但是要写hql语句

                b.  Criteria  使用这个对象查询操作不需要写查询语句,直接调用方法就可以实现

                c.   SQLQuery  查询使用SQLQuery时候,调用底层sql实现

             注 :hql和sql语句的区别

        -使用sql语句是操作数据库表和字段的

        -使用hql语句是操作实体类和属性的

1、Query

  public void demo(){
        /*.getCurrentSession()方法要配置当前事务绑定session*/
        Session session = HibernateUtils.getCurrentSession();
        Transaction tx = session.beginTransaction();
        /*hibernate 原生SQL语句查询
        * from tableName  查询表中所有的数据  简单查询
        *
        * from Customer where cust_name like ?  按条件查询
        *
        * 分页查询  下面的两个方法相当于mysql中的limit指令
        * query.setFirstResult(0);
        * query.setMaxResults(2);
        * */
        /*String hql = "from Customer where cust_name like ?";
        Query query = session.createQuery(hql);
        query.setParameter(0,"小%");*/
        String hql = "from Customer";
        Query query = session.createQuery(hql);
        /*分页查询*/
        query.setFirstResult(0);
        query.setMaxResults(2);
        List<Customer> list = query.list();
        for(Customer customer:list){
            System.out.println(customer);
        }
        tx.commit();
    }

2、Criteria

 public void demo(){
        /*.getCurrentSession()方法要配置当前事务绑定session*/
        Session session = HibernateUtils.getCurrentSession();
        Transaction tx = session.beginTransaction();
        /*
        * 简单查询
        Criteria criteria = session.createCriteria(Customer.class);*/
        /*条件查询*/
        /*Criteria criteria = session.createCriteria(Customer.class);
        criteria.add(Restrictions.like("cust_name","王%"));*/
        /*分页查询*/
        Criteria criteria = session.createCriteria(Customer.class);
        criteria.setFirstResult(0);
        criteria.setMaxResults(2);
        List<Customer> list = criteria.list();
        for(Customer customer:list){
            System.out.println(customer);
        }
        tx.commit();
    }

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章