Hibernate原理及框架結構以增刪改查語句

什麼是Hibernate?

hibernate是數據訪問層的框架,對JDBC進行了封裝,是針對數據庫訪問提出的面向對象的解決方案。

Hibernate的作用?

使用hibernate可以直接訪問對象,Hibernate自動將此訪問裝換成sql執行,從而達到間接訪問數據庫的目的,簡化了數據訪問層的代碼開發。

Hibernate與JDBC相比的優點:

自動生成sql語句;自動給參數賦值;自動將resultSet結果集轉換成實體對象;採用一致的方法對數據庫進行操作,移植性好。

ORM是什麼?

ORM:對象關係映射,指的是java對象和關係數據庫之間的映射。

ORM思想:就是將對象和數據庫數據進行相互轉換的思想,一般採用配置+反射來實現ORM。

Hibernate框架的設計原理:

hibernate採用ORM思想對Jdbc進行了封裝,解決了對象與數據庫的映射問題。hibernate提供了一系列API,允許我們直接訪問實體對象,然後根據ORM映射關係,轉換成sql並且去執行,從而達到訪問數據庫的目的。

 Hibernate框架體系結構
      2.1 主配置文件
Hibernate的主配置文件是一個xml文件,通常命名爲Hibernate.cfg.xml
        該文件中可以配置數據庫連接參數,Hibernate框架參數,以及映射關係文件


      2.2 實體類
實體類是與數據庫表格對應的java類型,它是用於封裝數據庫記錄的對象類型


      2.3 映射關係文件
映射關係文件指定了實體類和數據表的對應關係,以及類中屬性和表中字段之間的對應關係
Hibernate中使用XML文件來描述映射關係,文件通常命名爲"實體類.hbm.xml",並放於實體類相同的路徑下

      2.4 底層API
Hibernate提供了一系列的底層API,基於ORM思想,對數據庫進行訪問。
這些API主要是對映射關係文件的解析,根據解析出來的內容,動態生成sql語句,自動將屬性和字段進行映射。


Hibernate使用步驟
1 導入Hibernate包,以及數據庫驅動包
2 引入Hibernate主配置文件hibernate.cfg.xml
3 創建實體類
4 創建映射關係文件
5 使用Hibernate的常用API進行增刪查改操作

增:

	public void add(){
		Session session = HibernateUtil.getSession();
		Transaction tran = session.beginTransaction();
		Music music = new Music();
		music.setMusicName("成都");
		music.setSinger("趙雷");
		music.setSize("3.2M");
		try {
			session.save(music);
			tran.commit();
		} catch (Exception e) {
			e.printStackTrace();
			tran.rollback();
		}finally{
			session.close();
		}
	}

刪:

public void delete(){
		Session session = HibernateUtil.getSession();
		Transaction tran = session.beginTransaction();
		Music music = new Music();
		music.setId(11);
		session.delete(music);
		tran.commit();
	}

改:

public void update(){
		Session session = HibernateUtil.getSession();
		Transaction tran = session.beginTransaction();
		Music music = (Music)session.get(Music.class, 4);
		music.setMusicName("逆戰");
		music.setSinger("張傑");
		session.save(music);
		tran.commit();
	}

	public void findAll(){
		Session session = HibernateUtil.getSession();
		Query query = session.createQuery("from Music");
		List<Music> list = query.list();
		for(int i = 0;i < list.size();i++)
			System.out.println(list.get(i).getId()+ "--" + list.get(i).getMusicName() );
		
	}
	public void findById(){
		Session session = HibernateUtil.getSession();
		Music m = (Music) session.get(Music.class, 2);
		System.out.println(m.getSinger()+"---");
	}





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