1. 程式人生 > >Hibernate的api使用

Hibernate的api使用

Query物件

  1 使用query物件,不需要寫sql語句,但是寫hql語句

    (1)hql:hibernate query language,hibernate提供查詢語言,這個hql語句和普通sql語句很相似

    (2)hql和sql語句區別:

      - 使用sql操作表和表字段

      - 使用hql操作實體類和屬性

 

  2 查詢所有hql語句:

    (1)from 實體類名稱

 

  3 Query物件使用

    (1)建立Query物件

    (2)呼叫query物件裡面的方法得到結果

 

    @Test
    
void testQuery() throws Exception { SessionFactory sessionFactory = null; Session session = null; Transaction tx = null; try { sessionFactory = HibernateUtils.getSessionFactory(); session= HibernateUtils.openSession(); tx = session.beginTransaction(); Query qy
= session.createQuery("from User"); List<User> ls = qy.list(); for(User user:ls) { System.out.println(user); } tx.commit(); } catch (Exception e) { e.printStackTrace(); tx.rollback(); }
finally { session.close(); sessionFactory.close(); } }

 

 

Criteria物件

  1 使用這個物件查詢操作,但是使用這個物件時候,不需要寫語句,直接呼叫方法實現

 

  2 實現過程

  (1)建立criteria物件

  (2)呼叫物件裡面的方法得到結果

    @Test
    void testCriteria() throws Exception {
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction tx = null;
        try {
            sessionFactory = HibernateUtils.getSessionFactory();
            session= HibernateUtils.openSession();
            tx = session.beginTransaction();
            
            Criteria criteria = session.createCriteria(User.class);
            List<User> ls = criteria.list();
            for(User user:ls)
            {
                System.out.println(user);
            }
            
            tx.commit();
            
        } catch (Exception e) {
            
            e.printStackTrace();
            tx.rollback();
            
        } finally {
            
            session.close();
            sessionFactory.close();
        }
    }

 

SQLQuery物件

  1 使用hibernate時候,呼叫底層sql實現

 

  2 實現過程

    (1)建立物件

    (2)呼叫物件的方法得到結果

            SQLQuery sql = session.createSQLQuery("select * from t_user");
            List<Object[]> ls = sql.list();
            
            for(Object[] object:ls)
            {
                System.out.println(Arrays.toString(object));
            }

      返回list集合每部分是陣列

 

      返回list中每部分是物件形式

            SQLQuery sql = session.createSQLQuery("select * from t_user");
            
            sql.addEntity(User.class);
            
            List<User> ls = sql.list();
            
            for(User object:ls)
            {
                System.out.println(object);
            }
            
            tx.commit();