Hibernate是一個面向Java環(huán)境的對象/關(guān)系數(shù)據(jù)庫映射工具。對象/關(guān)系數(shù)據(jù)庫映射(object/relational mapping (ORM))這個術(shù)語表示一種技術(shù),用來把對象模型表示的對象映射到基于SQL的關(guān)系模型數(shù)據(jù)結(jié)構(gòu)中去。
Hibernate不僅僅管理Java類到數(shù)據(jù)庫表的映射(包括Java數(shù)據(jù)類型到SQL數(shù)據(jù)類型的映射),還提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法,可以大幅度減少開發(fā)時人工使用SQL和JDBC處理數(shù)據(jù)的時間。
Hibernate的目標(biāo)是對于開發(fā)者通常的數(shù)據(jù)持久化相關(guān)的編程任務(wù),解放其中的95%。對于以數(shù)據(jù)為中心的程序來說,它們往往只在數(shù)據(jù)庫中使用存儲過程來實(shí)現(xiàn)商業(yè)邏輯,Hibernate可能不是最好的解決方案;對于那些在基于Java的中間層應(yīng)用中,它們實(shí)現(xiàn)面向?qū)ο蟮臉I(yè)務(wù)模型和商業(yè)邏輯的應(yīng)用,Hibernate是最有用的。不管怎樣,Hibernate一定可以幫助你消除或者包裝那些針對特定廠商的SQL代碼,并且?guī)湍惆呀Y(jié)果集從表格式的表示形式轉(zhuǎn)換到一系列的對象去。
Hibernate主鍵生成策略
identity:使用數(shù)據(jù)庫的自動增長策略,不是所有數(shù)據(jù)庫都支持,比如oracle就不支持。
sequence:在 DB2,PostgreSQL,Oracle,SAP DB,McKoi 中使用序列(sequence)在使用Oracle數(shù)據(jù)庫時可以使用這一個。
hilo:使用高低位算法生成主鍵值。只需要一張額外表,所有的數(shù)據(jù)都支持。
native:根據(jù)底層數(shù)據(jù)庫的能力選擇 identity、sequence 或者 hilo中的一個。
assigned:手工指定主鍵值。
uuid:由Hibernate自動生成UUID并指定為主鍵值。
Hibernate的調(diào)優(yōu)方案
制定合理的緩存策略;
盡量使用延遲加載特性;
采用合理的Session管理機(jī)制;
使用批量抓取,設(shè)定合理的批處理參數(shù)(batch_size);
進(jìn)行合理的O/R映射設(shè)計
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版