什麼是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()+"---");
}