hibernate的一級緩存及事務管理

1、Hibernate的一級緩存:

1、什麼是緩存:緩存是hibernate的一種優化方式,將數據存入內存中,使用的時候直接從內存中取出;

2、hibernate的一級緩存:稱爲是session級別的緩存,一級緩存的生命週期與session一致,一級緩存是hibernate自帶的不可卸載的;

3、原理:在使用hibernate查詢對象時,首先會使用對象屬性的OID值在hibernate的一級緩存中查找,如果找到匹配的OID值的對象,則直接將該對象從緩存中取出來使用,不會再查詢數據庫,如果沒有找到則去數據庫中查找對應的數據;

例如:  Student stu=session.get("Student.class","1l");    會發送查詢sql

             Student stu1=session.get("Student.class","1l");    不會發送查詢sql

4、hibernate一級緩存的特殊區域:快照區

原理: Student stu=session.get(Student.class,"1l");                            緩存區                                 快照區

                                                                                                        id:1 name:張三                         id:1 name:張三 

            stu.setName("李四");                                                           id:1 name:李四                         id:1 name:張三   

            tx.commit();    ------提交事務時對比緩存區數據和快照區數據,如果相同則不更新數據,如果不相同則更新數據庫;

            session.close();

2、事務

1、什麼是事務:事務指的是邏輯上的一組操作,組成這組操作的各個邏輯單元要麼全部成功,要麼全部失敗;

2、事務的特性;

  • 原子性:代表事務不可分割;
  • 一致性:代表數據執行前後數據的完整性保持一致;
  • 隔離性:代表一個事務執行的過程中,不受到其他事務的干擾;
  • 持久性:代表事務執行完畢後,數據持久到數據庫中;

3、綁定:

爲保證連接爲同一個,需要將連接和當前線程進行綁定

hibernate內部已經綁定好了ThreadLocal,在SessionFactory中提供了一個方法,getCurrentSession();但是是默認禁用的,需要配置才能使用;在hibernate的核心配置文件中配置:

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