hibernate--query介面初步

來源:互聯網
上載者:User

標籤:style   blog   java   color   使用   檔案   

Query session.createQuery(String hql)方法;

* hibernate的session.createQuery()方法是使用HQL(hibernate的查詢語句)語句查詢對象的。

* hql:是查詢對象的,例如:"from User",其中from不區分大小寫,而User是區分大小寫,因為它是對象。是User類

* 返回Query對象。

* 執行這條語句後,Hibernate會根據設定檔中所配置的資料庫適配器自動產生相應資料庫的SQL語句。如:

ibernate: select user0_.id as id0_, user0_.name as name0_, user0_.password as password0_, 
user0_.createTime as createTime0_, user0_.expireTime as expireTime0_ from User user0_

Query的分頁查詢:

@Test    public void testQuery1() {        Session session = null;        try {            session = HibernateUtil.getSession();            session.beginTransaction();            Query query = session.createQuery("from User");            // 分頁查詢            query.setFirstResult(0);// 從哪一條記錄開始查詢,是從0開始計算            query.setMaxResults(2);// 分頁每頁顯示多少條記錄。            /*             * Query對象中有一個list()方式,將所有查詢來的對象自動產生list對象返回。             */            List userList = query.list();            // 然後我們就可以顯示資料了。            for (Iterator iter = userList.iterator(); iter.hasNext();) {                User user = (User) iter.next();                System.out.print(user.getId() + "   ");                System.out.println(user.getName());            }            session.getTransaction().commit();        } catch (HibernateException e) {            e.printStackTrace();            session.getTransaction().rollback();        } finally {            HibernateUtil.closeSession(session);        }    }
開源O/R映射架構內容回顧

Hibernate是一個O/R映射架構(也稱為ORM)

從ORM詞來看,O---Object(物件模型);R--- Relational(關聯模型),可以做對象和關聯的一種映射,當然這隻是部分功能,一個完善ORM架構應該具有更多的功能:如HQL相關的查詢語句、提供緩衝機制(一級緩衝、二級緩衝)。

Java開發資料庫時,使用JDBC,但是需要編寫大量相同的代碼,這樣不便提高生產效率,而hibernate可以讓你不能編寫大量的相同的代碼。從而提高生產效率。另一方面,hibernate可以讓我們更面對象化開發,還有一個移植性hibernate只需要更改設定檔(資料庫適配器)的選項,就可以非常方便的移植到不同的資料庫,而不需要重新編寫不同資料庫廠家所對應的JDBC、SQL語句了。還有hibernate可以解決阻抗不匹配(Java類中有繼承關係,而關係型資料庫中沒有這個功能(目前資料庫還不是物件導向,都是關係型資料庫)),使用hibernate架構,侵入性比較好(因此hibernate稱為輕量級架構)

O/R映射架構和使用環境:在程式中添加→修改→儲存;查詢可以批量,但是修改不可為批量性;程式中有大量的資料唯讀,這樣就可以一次性讀取到緩衝中;對象間存在自然的關係;不需要資料庫SQL特定的語句最佳化。

O/R映射架構不適合環境:聚集性操作:批量性添加、修改。批量的統計查詢。

Configuration對象:讀取hibernate設定檔(hibernate.cfg.xml或hiberante.properties)的. new Configuration()預設是讀取hibernate.properties, 所以使用new Configuration().configure();來讀取hibernate.cfg.xml設定檔

SessionFactory:是一個重量級對象,它的建立是耗時的。因為它對應一個資料庫裡所有配置,包括一些緩衝機制都由SessionFactory來維護,它與二級緩衝是綁定的。通常只建立一次,但它是安全執行緒的。

Session:是非安全執行緒的,它是通過SessionFactory來建立的。不要多個線程同時訪問同一個Session,否則會出現一些未知問題。通常是一個請求對應一個Session,請求完成要關閉Session

Transaction:hibernate預設不是自動開啟事務的,所以要手動開啟事務、手動提交事務、手動復原事務、手動關閉事務。當然可以通過設定檔配置成自動。一般使用手動。

Hibernate正常的開發思路:考慮物件模型這一塊,把物件模型建立起來,把對象圖建立起來,對象之間的關係建立起來、然後再編寫對應檔(hbm),然後根據對應檔產生資料庫表。資料庫對我來說是透明的,我們只操作對象不用關心資料庫。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.