Hibernate的CRUD的準備工作:
1):建立表t_user.
2):建立模型對象:User類.
3):編寫DAO組件.
DAO接口:IUserDAO
DAO實現類:UserDAOImpl(暫時不提供方法實現)
DAO測試類:UserDAOTest
4):使用Hibernate依賴jar包.
1).MySQL驅動包:mysql-connector-java-5.1.22.jar(勿忘)
5)Hibernate的CRUD的配置文件:
Hibernate的應用中主要包含兩種配置文件.
1):主配置文件(包含連接數據庫的基本要素:驅動類名,URL,賬號,密碼,方言,包含映射文件)
2):每一個Domain對象的映射文件(處理對象和表中的映射關系).
操作數據庫相關的對象
Configuration對象:
表示hibernate框架的配置對象,主要用于解析Hibernate配置文件和持久化映射文件中的信息,最重要的功能,是用來創(chuàng)建SessionFactory對象.(配置文件都要存放在CLASSPATH根路徑).
SessionFactory對象:
1.負責創(chuàng)建Session對象.
2.數據庫的連接信息是配置SessionFactory;
3.SessionFactory是線程安全的(DataSource),SessionFactory的創(chuàng)建需要很大的系統開銷,實際上,在創(chuàng)建sessionFactory的時候才會去連接數據庫,一般的,針對一個應用,一個數據庫服務器,只需要一個SessionFactory實例就夠了.
4.抽取Hibernate工具類:HibernateUtil
5.SessionFactory的重要方法:使用銀行轉賬案例,說明openSession和getCurrentSession.
****根據對象和映射文件,在創(chuàng)建SessionFactory對象的時候,可以生成對應的數據表:****
hibernate.hbm2ddl.auto=create-drop :刪除并創(chuàng)建表,關閉SessionFactory時,刪除數據庫表.
hibernate.hbm2ddl.auto=create :刪除并創(chuàng)建表
hibernate.hbm2ddl.auto=update :更新表結構:
hibernate.hbm2ddl.auto=validate :驗證表結構:如果表結構和映射文件不匹配,hibernate啟動失敗
Session對象:
1.主要方法:save/update/delete/get/createQuery/beginTransaction/getTransaction.
2.session不是線程安全的(好比Connection對象),所以,session的最大生命周期:一個線程,在web應用當中,一個session的最大生命周期:request.
3.Session中有一個緩存,稱為一級緩存。存放當前工作單元加載的對象.
在一個session的生命周期之內,連續(xù)拿相同類型,相同ID的對象,只需要發(fā)送一次SQL.
4.一級緩存能提高一定的性能,但是有限.
5.session加載出來的對象,都存放于一級緩存中進行管理.
6.控制一級緩存的方法:
clear():清空一級緩存所有對象
Session中的方法的作用是用來改變對象的狀態(tài)的,而不是發(fā)送SQL的.
臨時狀態(tài)/瞬時態(tài)(transient):剛剛用new語句創(chuàng)建感猛,沒有被持久化废酷,不處于session中梁肿。特點:沒有oid,不在session當中
持久化狀態(tài)(persistent):已經被持久化,加入到session的緩存中。特點:有oid,在session當中
脫管態(tài)/游離狀態(tài)(detached):已經被持久化,但不處于session中犬金。特點:有oid,不在session當中
刪除狀態(tài)(removed):對象有關聯的ID,并且在Session管理下,但是已經計劃被刪除晚顷。特點:有oid,在session當中,最終的效果是被刪除.
判斷規(guī)則:
1): 對象是否有OID;
2): 判斷對象是否被Session所管理(在一級緩存中).