hibernate框架的理解重點
阿新 • • 發佈:2019-02-04
/*
* sessionFactory.openSession() 資料操作過程中:
* 使用save,update,delete方法時 需要開啟事務 執行commit方法 事務要手動斷臂
* 執行查詢 load/get 不需要開啟事務
*
*
* sessionFactory.getCurrentSession()的使用:
* 需要配置當前事務: <property name="hibernate.current_session_context_class">thread</property>
* session必須在事務環境下使用,save,update,delete,方法 load/get 都需要開啟事務 Transaction tx=session.beginTransaction();
* 事務執行commit/rollback完畢,session自動關閉,不需要手動關閉session
*
* sessionFactory.openSession() 資料操作過程中:
* 使用save,update,delete方法時 需要開啟事務 執行commit方法 事務要手動斷臂
* 執行查詢 load/get 不需要開啟事務
*
*
* sessionFactory.getCurrentSession()的使用:
* 需要配置當前事務: <property name="hibernate.current_session_context_class">thread</property>
* session必須在事務環境下使用,save,update,delete,方法 load/get 都需要開啟事務 Transaction tx=session.beginTransaction();
* 事務執行commit/rollback完畢,session自動關閉,不需要手動關閉session
*
*/
/*
* 一級快取:基於事務的快取,基於session會話的
* 資料在執行查詢的過程中,如果一級快取資料存在,不會發送select語句到資料庫
* 快取清除:session.clear() 清除當前session的所有資料
* session.evict() 對指定的物件的快取進行清除
// //Hibernate執行修改操作:先查詢再修改
可以將資料庫中的資料物件查詢出來之後,直接修改物件的屬性,然後提交事務即可
原因:當事務提交時會將session物件中的快取與資料庫對比,當兩者不同時,會將快取中的資料直接儲存到資料庫中,不需要再執行資料庫的update語句
*/
/*
* get():當查詢到id不存在時,返回null,不會發生異常資訊
load():當查詢到id不存在時,報異常資訊
*/