Java框架學習之Hibernate入門
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】三大框架學習入門Java框架
- JAVA高階程式設計之hibernate框架學習二Java程式設計框架
- Hibernate框架學習框架
- Mybatis框架 入門學習MyBatis框架
- Python入門之web2py框架學習!PythonWeb框架
- java框架之Hibernate框架知識點整理。Java框架
- Java入門學習-學習static的用法Java
- 學習Java怎麼入門?Java
- Java學習路線·入門Java
- Java新手如何學習Spring、Struts、Hibernate三大框架?JavaSpring框架
- 【mybatis學習之入門(一)】MyBatis
- 深入學習Spring框架(一)- 入門Spring框架
- 學習java怎麼入門?怎樣學Java?Java
- Java之struts2框架學習Java框架
- 框架學習:hibernate框架的結構和分析框架
- 成都Java學習入門建議Java
- Java入門學習-理解I/OJava
- Java學習從入門到精通Java
- MySQL入門學習之——innodb lockMySql
- Java語言入門:該如何學習JavaJava
- java學習筆記1(入門級)Java筆記
- java入門基礎學習----泛型Java泛型
- Java新手入門學習路線圖Java
- Java入門學習-深入理解集合Java
- Java入門學習-自我理解IO流Java
- java J2EE學習入門Java
- Java學習從入門到精通的學習建議Java
- Java學習福利,入門到精通學習路線分享Java
- 01-Spring Security框架學習--入門(二)Spring框架
- Flutter學習之入門和體驗Flutter
- MySQL入門學習之——實戰XtraBackupMySql
- MySQL入門學習之——實戰mysqldumpMySql
- Java開源專案Hibernate快速入門Java
- Java入門學習手冊之Eclipse常用快捷鍵彙總JavaEclipse
- java基礎學習之類集框架(十)Java框架
- Vue入門到關門之Vue3學習Vue
- Java工程師學習指南(入門篇)Java工程師
- Java工程師學習指南 入門篇Java工程師