1、什么是Hibernate
Hibernate是輕量級(jí)JavaEE應(yīng)用的持久層解決方案,是一個(gè)關(guān)系數(shù)據(jù)庫(kù)ORM框架(ORM,對(duì)象關(guān)系映射 Object Relationship mapper)
ORM 就是通過(guò)將Java對(duì)象映射到數(shù)據(jù)庫(kù)表,通過(guò)操作Java對(duì)象,就可以完成對(duì)數(shù)據(jù)表的操作
輕量級(jí):指的是對(duì)于內(nèi)存,cpu資源消耗比較小,學(xué)習(xí)也相對(duì)容易。
發(fā)展由來(lái):
jdbc實(shí)現(xiàn)DAO數(shù)據(jù)訪問(wèn),dbutils框架來(lái)實(shí)現(xiàn)DAO操作可以簡(jiǎn)化數(shù)據(jù)庫(kù)操作(但還不能脫離sql語(yǔ)句),hibernate也是一個(gè)持久層(DAO)框架不需要編寫(xiě)相關(guān)的sql語(yǔ)句就可以操作數(shù)據(jù)庫(kù)。
Orm對(duì)象關(guān)系映射要完成的工作是什么?
完成的是類(lèi)與表的映射,類(lèi)中屬性與表字段的映射。它們之間的這種映射關(guān)系是非常嚴(yán)格的,有專(zhuān)門(mén)的文件來(lái)實(shí)現(xiàn)這種映射關(guān)系的配置(配置文件實(shí)質(zhì)就是一個(gè)xml文件,*.hbm.xml)。*的取名一般為實(shí)體類(lèi)的類(lèi)名。
Hibernate要操作數(shù)據(jù)庫(kù)同樣也需要連接數(shù)據(jù)庫(kù),要連接數(shù)據(jù)庫(kù)就必須有連接數(shù)據(jù)庫(kù)的四項(xiàng)基本信息(driver, url,username,password),hibernate中為了規(guī)范(hibernate配置文件中包含有數(shù)據(jù)庫(kù)連接的基本信息,文件名:hibernate.cfg.xml)
Hibernate 就是底層使用了jdbc實(shí)現(xiàn),并進(jìn)行了封裝的一個(gè)輕量級(jí)的持久化解決方案。
Hibernate提供了對(duì)關(guān)系型數(shù)據(jù)庫(kù)增刪改成操作
JPAJava Persistence API.JPA通過(guò)JDK 5.0注解或XML描述對(duì)象-關(guān)系表的映射關(guān)系(只有接口規(guī)范)
Hibernate最流行ORM框架,通過(guò)對(duì)象-關(guān)系映射配置,可以完全脫離底層SQL
MyBatis本是apache的一個(gè)開(kāi)源項(xiàng)目 iBatis,支持普通 SQL查詢(xún),存儲(chǔ)過(guò)程和高級(jí)映射的優(yōu)秀持久層框架
Apache DBUtils 、Spring JDBCTemplate
持久化技術(shù)有哪些?按封裝程序由高到低排列
Hibernate>mybatis>spring jdbcTemplate ,dbutils > jdbc
2、Hibernate的優(yōu)點(diǎn)
Hibernate對(duì)JDBC訪問(wèn)數(shù)據(jù)庫(kù)的代碼做了封裝,大大簡(jiǎn)化了數(shù)據(jù)訪問(wèn)層繁瑣的重復(fù)性代碼
Hibernate是一個(gè)基于jdbc的主流持久化框架,是一個(gè)優(yōu)秀的orm實(shí)現(xiàn),它很大程度的簡(jiǎn)化了dao層編碼工作
Hibernate使用Java的反射機(jī)制,而不是字節(jié)碼增強(qiáng)程序類(lèi)實(shí)現(xiàn)透明性
Hibernate的性能非常好,因?yàn)樗且粋€(gè)輕量級(jí)框架。映射的靈活性很出色。它支持很多關(guān)系型數(shù)據(jù)庫(kù),從一對(duì)一到多對(duì)多的各種復(fù)雜關(guān)系。
Hibernate本身性能不是很好,存在很多優(yōu)化手段(一級(jí)緩存、二級(jí)緩存、查詢(xún)緩存、抓取策略)
3、Hibernate準(zhǔn)備工作
1.準(zhǔn)備hibernate3.x的開(kāi)發(fā)包
開(kāi)發(fā)包文件結(jié)構(gòu)
lib文件夾內(nèi)容
補(bǔ)充:log4j(log for java) 用于記錄日志
Log4j的主要作用是解放程序員,避免程序員去操作IO流。
什么是日志?
用文本的方式將軟件操作過(guò)程中所發(fā)生的一系列操作全部記錄下來(lái)
如何學(xué)習(xí)log4j?
導(dǎo)入log4j.jar包
學(xué)習(xí)如何配置log4j(配置文件:src/log4j.properties)
準(zhǔn)備完整所需的Hibernate的jar包
準(zhǔn)備hibernate配置文件(hibernate.cfg.xml)
DTD約束文件在MyEclipse中的關(guān)聯(lián)
準(zhǔn)備hibernate映射文件
4、Hibernate操作
7個(gè)步驟
1.加載hibernate配置文件及映射文件
2.得到SessionFactory對(duì)象(好比數(shù)據(jù)庫(kù)連接池)
3.得到Session對(duì)象(好比數(shù)據(jù)庫(kù)連接Connection)
4.開(kāi)啟事務(wù)
5.執(zhí)行CRUD操作
6.提交或回滾事務(wù)
7.關(guān)閉資源(session關(guān)閉 sessionFactory關(guān)閉 )