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();
    }

 

 

 

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