I prepared it for the meeting last week,i hope it will help us to know Hibernate.
Eric1_Ma 6/1/2010
一.什么是hibernate
1.中間件(軟件):介于數據庫同應用程序之間的軟件
2.ORM工具:位于業務邏輯層和數據庫中間,提供對象-關系的映射,將一個持久化對象保存到數據庫中稱為一條記錄,同面向關系的數據庫進行映射,可以實現內存中數據同數據庫中數據的雙向同步更新
表現層 (web層)
業務邏輯層
持久化層 (jdbc Hibernate)
數據庫
二.hibernate涉及的文件
1.POJO:Plain Old Java Objece
2.hibernate配置文件:配置數據庫連接相關的信息
hibernate.propterties或hibernate.cfg.xml
3.bernate映射文件:配置類和表,屬性和字段等的關系
xxx.hbm.xml
類<---------------->表
屬性<-------------->字段
三.Hibernate的工作原理
1.Hibernate框架根據hibernate.cfg.xml的配置的信息(URL,Driver,User,Password)來和 數據庫進行通信;
2.Hibernate框架根據具體的映射文件(如:student.hbm.xml,該文件配置類,類的屬性和表中字段的映射關系)來對對象進行保存,更新,刪除和查詢
3.核心接口
1.Configuration:
1)對hibernate進行配置,根啟動hibernate
2)創建SessionFactory
2.SessionFactory
1)重量級的(非常占用資源),不用頻繁的創建,刪除,一般一個數據庫對應一個SessionFacory
2)線程安全的
3)緩存sql語句
4)維護hibernate的二級緩存
5)用來創建Session
3.Session:持久化管理器
1)輕量級的,可以頻繁的創建和刪除,一般一個事務中的操作對應一Session
2)線程不安全
3)維護著hibernate的一級緩存
4)用來執行CRUD操作
session.save();插入
session.delete();刪除
session.update();更新
session.get();查詢
a.數據庫中無對應記錄,返回null
b.直接到數據庫中去查
c.不使用代理類
session.load();查詢
a.數據庫中無對應記錄,拋出ObjectNotFoundException異常
b.先到緩存中去查,緩存中沒有再到數據庫中查
c.使用代理類
4.Transaction
hibernate中的事務控制,通過session.beginTransaction()得到
5.Query
通過HQL執行查詢操作(查詢的是集合)
session.createQuery(String queryString)
sql:select id,name,age from student(表名)
hql:from Student(類名)
6.Criteria:擅長于作動態查詢
四.hibernate編寫步驟
1)創建配置文件
2)創建POJO類
3)創建映射文件
4)寫程序調用Hibernate的API
a)創建Configuration
Configuration config = new Configuration();
config.configure(".../hibernate.cfg.xml");
b)創建SessionFactory
SessionFactory sf=config.buildSessionFactory();
c)創建Session
Session session = sf.openSession();
d)執行CRUD操作(可能涉及到事務)
Transaction tran = session.beginTransaction();\
session.save()...
session.update()...
...
tran.commit()/rollback();
e)關閉和數據庫的鏈接
session.close();
