hibernate 入門及心得
-
什麼是hibernate
ORM框架/持久層框架
object reference mapping優勢:跨資料庫的無縫移植
注1:Object Relational Mapping
-
如何在專案中新增hibernate支援(手動新增)
2.1 新增hibernate相關依賴
2.2 在resource目錄下新增hibernate.cfg.xml(核心配置檔案)
,不能有中文!!!
2.2.1 新增DTD支援
2.2.2 新增Hibernate的配置
2.2.2.1 資料庫相關(connection.username|connection.password|connection.url|connection.driver_class|dialect)
2.2.2.2 除錯相關(show_sql|format_sql)
2.3 在開發階段再建立實體類和實體對映檔案(*.hbm.xml)
實體必須實現Serializable介面
小結:hibernate.cfg.xml(1)/*.hbm.xml(N)
實體對映檔案一定要加到核心配置檔案
- hibernate核心API講解
3.1 Configuration
讀取hibernate.cfg.xml
3.2 SessionFactory(1)
3.3 Session(N)
注1:
注2:
3.3.1 save
3.3.2 get(不講load方法,在hibernate物件狀態時再講)
load
3.3.3 delete(先查再刪除,保證程式的健壯性)
User u = (User) session.get(User.class,99);
if(null!=u){
session.delete(u);//比如id=99不存在,直接刪除就會報錯
}
3.3.4 update
先查再改
區域性修改
3.3.4 createQuery
3.4 Transaction(自動事務和手動事務講解)
commit/rollback
3.5 Query(hql一章講)
查全部/批量修改或刪除
list
setXxx(String name,Xxx value);
setParameter(String name, Object value)
setParameterList(String name, Collection values)
setParameterList(String name, Object[] values)
setFirstResult/setMaxResults
- 如何使用hibernate完成CRUD操作
4.1 CRUD操作步驟
4.1.1 讀取配置
4.1.2 建立SessionFactory
4.1.3 開啟Session
4.1.4 開啟事務
4.1.5 CURD
4.1.6 提交事務/回滾事務
4.1.7 關閉Session
4.2 注意事項
4.2.1 hibernate預設使用的是手動事務,因此必須顯示的開啟和提交事務
4.2.2 刪除操作時,必須先查再刪
SessionFactory物件的建立代價很昂貴,它是執行緒安全的物件,它為所有的應用程式執行緒所共享。它只建立一次,通常是在應用程式啟動的時候,由一個Configuraion的例項來建立
Session物件的建立代價比較小,是非執行緒安全的,對於單個請求,單個會話、單個的 工作單元而言,它只被使用一次,然後就丟棄。只有在需要的時候,一個Session物件 才會獲取一個JDBC的Connection(或一個Datasource) 物件,因此假若不使用的時候它不消費任何資源。
Hibernate3.3.2版本中getSession().connection()已被棄用,hibernate4中官方推薦使用Session doWork()方法進行jdbc操作
心得:環境配置時不能有中文!配置hibernate和配置jdk差不多。,在環境配置時,新增阿里雲私服可以執行更快。
jar包有問題時,可以去官網下載其他版本的jar包,大部分jar包在這裡都能找到(http://mvnrepository.com/),一般都是版本問題,沒啥大問題。
寫專案記得聯網。