阿里P8告訴你Java架構hibernate怎麼入門

來源:互聯網
上載者:User

標籤:vpd   隨心所欲   too   proc   size   Nid   rop   sql   java程式員   

Hibernate是一個開放原始碼的對象關係映射架構,它對JDBC進行了非常輕量級的對象封裝,使得Java程式員可以隨心所欲的使用對象編程思維來操縱資料庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的用戶端程式使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成資料持久化的重任。

流程圖:

核心介面

Hibernate的核心介面一共有6個,分別為:Session、SessionFactory、Transaction、Query、Criteria和Configuration。這6個核心介面在任何開發中都會用到。通過這些介面,不僅可以對持久化對象進行存取,還能夠進行事務控制。下面對這6個核心介面分別加以介紹。

Session

Session介面負責執行被持久化對象的CRUD操作(CRUD的任務是完成與資料庫的交流,包含了很多常見的SQL語句。)。但需要注意的是Session對象是非安全執行緒的。同時,Hibernate的session不同於JSP應用中的HttpSession。這裡當使用session這個術語時,其實指的是Hibernate中的session,而以後會將HttpSession對象稱為使用者session。

SessionFactory

SessionFactory介面負責初始化Hibernate。它充當資料存放區源的代理,並負責建立Session對象。這裡用到了原廠模式。需要注意的是SessionFactory並不是輕量級的,因為一般情況下,一個項目通常只需要一個SessionFactory就夠,當需要操作多個資料庫時,可以為每個資料庫指定一個SessionFactory。

Transaction

Transaction 介面是一個可選的API,可以選擇不使用這個介面,取而代之的是Hibernate 的設計者自己寫的底層交易處理代碼。 Transaction 介面是對實際事務實現的一個抽象,這些實現包括JDBC的事務、JTA 中的UserTransaction、甚至可以是CORBA 事務。之所以這樣設計是能讓開發人員能夠使用一個統一事務的操作介面,使得自己的項目可以在不同的環境和容器之間方便地移植。

Query

Query介面讓你方便地對資料庫及持久對象進行查詢,它可以有兩種表達方式:HQL語言或本機資料庫的SQL語句。Query經常被用來綁定查詢參數、限制查詢記錄數量,並最終執行查詢操作。

Criteria

Criteria介面與Query介面非常類似,允許建立並執行物件導向的標準化查詢。值得注意的是Criteria介面也是輕量級的,它不能在Session之外使用。

Configuration

Configuration 介面的作用是對Hibernate 進行配置,以及對它進行啟動。在Hibernate 的啟動過程中,Configuration 類的執行個體首先定位映射文檔的位置,讀取這些配置,然後建立一個SessionFactory對象。雖然Configuration 介面在整個Hibernate 項目中只扮演著一個很小的角色,但它是啟動hibernate 時所遇到的每一個對象。

hibernate的優點

Hibernate會處理映射的Java類來使用XML檔案,資料庫表和無需編寫任何一行代碼。
提供了簡單的API,用於直接從資料庫中儲存和檢索Java對象。
如果有變化,資料庫或任何錶中的那麼只需要修改XML檔案的屬性。
抽象掉不熟悉的SQL類型,並提供我們解決熟悉的Java對象。
Hibernate不要求應用伺服器進行操作。
操縱資料庫物件的複雜關聯。
盡量減少與智能讀取策略資料庫的訪問。
提供資料的簡單查詢。

hibernate配置

先下載hibernate所需包,我下載的是hibernate-distribution-3.6.4.Final,解壓縮下載的檔案,目錄結構如下所示。

然後將lib中的包拷貝到項目中即可。

同時也可以使用myeclipse直接載入hibernate架構。

設定檔hibernate.cfg.xml

<?xml version=‘1.0‘ encoding=‘UTF-8‘?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.url">
jdbc:mysql://127.0.0.1:3306/java_web
</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="myeclipse.connection.profile">Test</property>
<property name="hbm2ddl.auto">update</property>
<property name="hibernate.connection.autocommit">true</property>
<property name="show_sql">true</property>
<property name="defaultAutoCommit">true</property>
<property name="maxActive">10000</property>
<property name="maxIdle">50</property>
<property name="maxWait">3000</property>
<property name="initialSize">10</property>
<property name="minIdle">20</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
</session-factory>
</hibernate-configuration>

寫在最後:歡迎留言討論,私信“Java”或“架構資料”有驚喜!加關注,持續更新!!!

阿里P8告訴你Java架構hibernate怎麼入門

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.