1.[精通Hibernate筆記]Hibernate簡介

Hibernate是Java應用關係數據庫之間的橋樑,負責Java對象和關係數據之間的映射。Hibernate內部封裝了通過JDBC訪問數據庫的操作,向上層應用提供面向對象的數據訪問API。

Hibernate配置文件

Hibernate從其配置文件中讀取和數據庫連接有關的信息,Hibernate的配置文件有兩種形式,配置文件默認文件名hibernate.properties;另一種是XML格式的文件;還有一種是Java屬性文件,採用鍵值對形式。

hibernate.dialect=net.sf.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost:3306/SAMPLEDB
hibernate.connection.username=root
hibernate.connection.password=1234
hibernate.show_sql=true

創建持久化類

持久化類是指其實例需要被Hibernate持久化到數據庫的類。持久化類通常都是域模型的實體域類。持久化類符合JavaBean規範,包含屬性,以及與之對對應的getXXX()和setXXX()方法。

Hibernate不需要持久化類必須實現java.io.Serializable接口,但對於採用分佈式結構的Java應用,當Java對象在不同的進程節點之間傳輸時,這個對象所屬的類必須實現Serializable接口。

在Java Web應用中,如果希望對HttpSession中存放的Java對象進行持久化,這個Java獨享所屬的類必須實現Serializable接口。

Hibernate要求持久化類必須提供一個不帶參數的默認構造方法,在程序運行時,Hibernate運用Java反射機制,調用java.lang.reflect.Constructor.newInstance()方法來構造持久化類的實例。

創建對象-關係映射文件

在運行時,Hibernate將根據這個映射文件來生成各種SQL語句。

Java類型、Hibernate映射類型以及SQL類型之間的對應關係

Java類型

Hibernate類型

SQL類型

java.lang.String

string

VARCHAR(n)

int

int

INT

char

character

CHAR(n)

boolean

boolean

BIT

byte[]

binary

BLOG

java.sql.Date

date

DATE

java.sql.Timestamp

timestamp

TIMESTAMP

通過Hibernate API操作數據庫

public class BussinessService {
    public static SessionFactory sessionFactory;
    static {
        try {
            Configuration config = new Configuration();
            config.addClass(Customer.class);
            sessionFactory = config.buildSessionFactory();
        } catch (Exception e) {
        }
    }
    public void deleteAllCustomers() throws Exception {
        Session session = sessionFactory.openSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            session.delete("from Customer as C");
            tx.commit();
        } catch (Exception e) {
            if (tx != null)
                tx.rollback();
            throw e;
        } finally {
            session.close();
        }
    }
}

Hiberante初始化

創建一個Configuration類的實例,Configuration類的構造方法把默認文件路徑下的hibernate配置文件中配置信息讀入到內存;

調用Configuration類中的addClass(Customer.class)方法,該方法把映射信息讀入到內存中;

調用Configuration類的buildSessionFactory()方法,該方法創建一個SessionFactory實例,併發Configuration對象包含的配置信息拷貝到SessionFactory對象的緩存中。SessionFactory達標一個數據庫存儲源,一個數據庫存儲源值需創建一個SessionFactory實例,SessionFactory不和Configuration關聯,如果修改Configuration對象包含的配置信息不會對SessionFactory對象有任何影響。

訪問Hibernate的Session接口

初始化結束後,調用SessionFactory實例的openSession()方法類獲得Session實例,然後通過它執行數據庫的操作,Session接口提供操作數據庫的各種方法:

save()方法:把Java獨喜愛那個保存到數據庫

update()方法:更新數據庫的Java隊形

delete()方法:把Java對象從數據庫中刪除

load()方法:從數據庫中加載Java對象

find()方法:從數據庫中查詢Java對象

Session是一個輕量級對象,通常每一個Session實例和一個數據庫事務綁定,即沒執行一個數據庫事務,都必須先創建一個新的Session實例。如果事務執行出現異常,應撤銷事務。無論事務是否執行成功,最後都應該關閉Session。



說明:筆記內容摘自《精通Hibernate:Java對象持久化技術詳解》

關聯:整理了一些Java軟件工程師的基礎知識點



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章