hibernate簡單入門教程(一)---------基本配置

應用級別因此很粗淺java

首先介紹一下hibernate框架:sql

1.優秀的持久化(通俗講把內存上的短期運行信息存儲在持久化硬盤上)框架。數據庫

2.做用於持久層,由於沒什麼侵入性,因此一樣適用於其餘層面上的存儲緩存

3.高度整合jdbc,簡化了不少jdbc的操做。好比查詢,好比存儲session

4.二級緩存。緩存一部分所查詢的數據,方便隨時調用,大大的減小了數據庫查詢。app

5.ORM(Object/Rational Mapping)關係映射工具。對象關係映射把數據表的操做簡化爲對於對象的操做,讓面向對象思惟更加實際。框架

 

而後開始正式部署。部署以前首先調用jar包ide

 

除了以上的包還須要jdbc的全部包。這上面只是hibernate的包工具

(1)導入以上jar包ui

(2)在src下建立並編寫Hibernate主配置文件 用於初始化hibernate須要用的信息。這個文件能夠放在src下,也能夠放在classes下。命名爲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">

<hibernate-configuration>
    <session-factory>
        <!--驅動路徑注意數據庫類型  -->
        <property name="connection.driver_class"></property>
        <!--數據庫路徑  -->
        <property name="connection.url"></property>
        <!--數據庫用戶名  -->
        <property name="connection.username"></property>
        <!--數據庫密碼  -->
        <property name="connection.password"></property>
        <!--方言,便於hibernate對象操做轉化爲合適的數據庫語句  -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <!--是否顯示sql語句,sql通常會很難看  默認爲false-->
        <property name="hibernate.show_sql">true</property>
        <!--下一個層級的映射文件,用來配置bean對象與數據表之間的關係  -->
        <mapping resource="com/dhh/pojo/Person.hbm.xml"/>
    </session-factory>
</hibernate-configuration>
複製代碼

 

 

(3)在某個目錄下建立映射文件,這就是上一步提到的Person.hbm.xml。通常跟bean放在同一個目錄下,接受hibernate.cfg.xml管理的對象與數據表的關係中間件

複製代碼
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 注意包名。不寫的話下面要寫全限定名 -->
<hibernate-mapping    package="com.dhh.pojo">
    <!-- 類名對應表名 -->
    <class name="Person" table="person">
        <!-- 主鍵使用id標籤。而後對應屬性名與列名 -->
        <id name="id" type="int" column="id">
            <!-- 自增加主鍵不一樣數據庫有不一樣類型的自增加類型,有須要能夠百度到答案的 -->
            <generator class="identity"></generator>
        </id>
        <!-- 非主鍵映射關係,注意類型並非單純的java類型也不是數據庫類型,而是一種中間類型,注意大小寫特別是String在這裏開頭要小寫 -->
        <property name="name" type="string" column="name"></property>
        <property name="age" type="int" column="age"></property>
        <property name="address" type="string" column="address"></property>
    </class>
</hibernate-mapping>
複製代碼

 上面所說的主鍵自增加類型可參考下表

 

中間類型參考下表

 

 

 

(4)運行方式。

  

複製代碼
package com.dhh.Util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class Util {
    public static Configuration cfg;
    public static SessionFactory sessionFactory;
    static{
        //啓動本來設定好的配置管理文件
        cfg=new Configuration().configure();
        //創建會話工廠用來產生會話,工廠能夠只有一個
        sessionFactory=cfg.buildSessionFactory();
    }
    public static Session openSesson(){
        return sessionFactory.openSession();
    }
public static Transaction beginTransaction(Session session){ return session.beginTransaction(); } }
複製代碼

下面介紹一下一上的類與接口。

1)Configuration類

Configuration 類負責讀取主配置文件的信息。包括以下內容:

Hibernate運行的底層信息:數據庫的URL、用戶名、密碼、JDBC驅動類,數據庫Dialect,數據庫鏈接池等(對應 hibernate.cfg.xml 文件)。

持久化類與數據表的映射關係(*.hbm.xml 文件)

加載Xml文件(hibernate.cfg.xml)建立對象方式

Configuration cfg = new Configuration().configure();

 

2)SessionFactory接口

Configuration對象根據當前的配置信息生成 SessionFactory 對象,所以SessionFactory 對象中保存了當前的數據庫配置信息和全部映射關係以及預約義的SQL語句。同時,SessionFactory還負責維護Hibernate的二級緩存。

獲取SessionFactory的方式:

   Configuration cfg = new Configuration().configure();

   SessionFactory sf = cfg.buildSessionFactory();

SessionFactory做用:是生成Session的工廠

    Session session = sf.openSession();

 

Session接口

Session接口:是應用程序與數據庫之間交互操做的核心對象,是 Hibernate 運做的中心,全部持久化對象(javabean)必須在 session 的管理下才能夠進行持久化(更新數據庫)操做。

獲取Session對象的方式:

Session session  = sessionFactory.openSession();

Session的主要方法簡介:

取得持久化對象的方法: get() load()

持久化對象保存,更新和刪除:save(),update(),saveOrUpdate(),delete()

開啓事務: beginTransaction().

管理 Session 的方法:isOpen(),flush(), clear(), evict(), close()等

 

 

4)Transaction接口

 

表明一次數據庫訪問的最小操做,具備數據庫事務的概念。全部持久層都應該在事務管理下進行,即便是隻讀操做。

 

獲取Transaction對象的方式:

 

  Transaction tx =session.beginTransaction();

 

經常使用方法:

 

commit():提交相關聯的session實例

 

rollback():撤銷事務操做

 

wasCommitted():檢查事務是否提交

 

 

5)Query接口

 

Query接口 :封裝數據庫查詢的返回結果(hql的查詢方式)

 

獲取Query對象的方式:

 

 Query query = session.createQuery(「hql");

 

經常使用方法

 

Iterator():獲取查詢結果的迭代器對象(只查詢主鍵,返回)

 

list():以集合的方式獲取查詢結果

 

 

 

 

(5)執行原理與流程

a、應用程序先調用Configuration類,該類讀取Hibernate配置文件及映射文件中的信息,

b、並用這些信息生成一個SessionFactory對象,

c、而後從SessionFactory對象生成一個Session對象,

d、並用Session對象生成Transaction對象;

e、可經過Session對象的get(),load(),save(),update(),delete()和saveOrUpdate()、createQuery()等方法對進行CURD等操做;

f、提交事物。

相關文章
相關標籤/搜索