初識--hibernate

前幾天剛剛學了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的一個初步認識.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章