前幾天剛剛學了hibernate 結合其他的知識 大致有了一個初步的瞭解.
一:什麼是hibernate?
hibernate是一個輕量級JavaEE應用的持久層框架,是一個完全的ORM框架。
什麼叫持久化? 你存的數據是存在數據庫裏,而數據庫是存在硬盤(電腦磁盤),它能夠在你電腦的磁盤上保存很長一段時間.
什麼叫持久層? 就是進行數據庫操作或者跟數據庫打交道的那一層就是就持久層,比如我們的三層架構,也有專門和數據庫打交道的一層,那就叫持久層啦.
我們去配置xxx.hbm.xml:目的就是爲了hibernate與我們的application相關聯
我們去配置hibernate.cfg.xml:與數據庫相關的服務,例如:用戶名和密碼等。還有自身hibernate的服務。
二、hibernate有什麼作用?
1、通過hibernate,完成POJO類到數據庫表的映射關係
2、通過hibernate,只需要操作對象,hibernate就幫我們生成數據庫語句去操作數據庫,我們不必管下面的語句是怎麼樣的。
3、大概就是上面說的這兩個,就是讓用戶來對對象的增加、刪除、修改操作,來達到對數據庫表中數據的這種增刪改的操作。
三、使用hibernate需要導的jar包和jar包的意思?
通過xxx.hbm.xml配置文件來反應pojo類和數據庫表的映射關係。
主鍵生成策略:
1、increment:主鍵自動增長、由hibernate來管理
注意:如果數據庫也設置了自動增長,就會發生主鍵衝突問題
2、identity:由底層數據庫來管理生成,不由hibernate管理
也就是說底層數據庫怎麼設置的主鍵就怎麼來
注意:mysql、sql server可以,oracle不可以
3、sequence:標識符生成器,就是底層數據庫來管理生成,利用底層數據庫提供的序列來生成標識符,不由hibernate管理
注意:mysql不支持序列 oracle支持
4、native:由底層數據庫自己來決定使用什麼策略,hibernate不管
注意:mysql自動選擇identity、oracle自動選擇sequence
5、uuid:隨機生成32位不相同的字符串。
主鍵分自然主鍵和代理主鍵
1自然主鍵:也就是在業務中有具體意義的主鍵,
2代理主鍵,就是上面我們說的那5種,沒有任何意義,只是標識主鍵是唯一的。
四、hibernate的配置,hibernate.cfg.xml
有了xxx.hbm.xml這個映射文件還不夠,因爲hibernate需要連接數據庫,那麼這些操作放哪裏呢,就提取出一個公用的配置文件出來,hibernate.cfg.xml就是這種公共的配置文件,加載數據庫連接的信息,和將各種映射文件加載進來,其實就是抽取出來的,因爲有很多映射文件,每個映射文件都需要連接數據庫等操作,那麼久將共同的操作提取出來形成了hibernate.cfg.xml。
有了xxx.hbm.xml和hibernate.cfg.xml後,就能使用hibernate的功能了。
package com.zking.action;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.zking.entity.Mytest;
public class MytestAction {
private Configuration con=null;
private SessionFactory sf=null;
private Session session=null;
private Transaction ta=null;
@Before
public void before() {
//加載classpath下的hibernate.cfg.xml文件
con=new Configuration().configure();
//連接會話的工廠
sf=con.buildSessionFactory();
//創建session
session=sf.openSession();
//開啓事務進行提交
ta=session.beginTransaction();
}
@After
public void after() {
//關閉事務
ta.commit();
//關閉session
session.close();
//關閉工廠
sf.close();
}
@Test
public void mytestgenerator() {
//實例化對象
Mytest t=new Mytest();
t.setTname("李四");
//保存增加的對象
session.save(t);
}
}
以上就是我對hibernate的一個初步認識.