程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java三大框架之——Hibernate,java三大hibernate

Java三大框架之——Hibernate,java三大hibernate

編輯:JAVA綜合教程

Java三大框架之——Hibernate,java三大hibernate


什麼是Hibernate?

  Hibernate是基於ORM(O:對象,R:關系,M:映射)映射的持久層框架,是一個封裝JDBC的輕量級框架,主要實現了對數據庫的CUPD操作。

  注:CRUD是指在做計算處理時的增加(Create)、查詢(Retrieve)(重新得到數據)、更新(Update)和刪除(Delete)幾個單詞的首字母簡寫。主要被用在描述軟件系統中數據庫或者持久層的基本操作功能。

 

Hibernate中的核心接口和類

  Hibernate的核心類和接口一共有6個,分別為:Session、SessionFactory、Transaction、Query、Criteria和Configuration。這6個核心類和接口在任何開發中都會用到。通過這些接口,不僅可以對持久化對象進行存取,還能夠進行事務控制。

  Session接口:負責對象的持久化操作,但需要注意的是它非線程安全的。

  SessionFactory接口:負責Hibernate的初始化操作,數據存儲的代理對象,並且負責創建Session對象,

  Transaction接口:負責數據的事務操作。

  Query接口:負責數據庫及持久化對象的查詢操作,它可以有兩種表達方式:HQL語言或本地數據庫的SQL語句。Query經常被用來綁定查詢參數、限制查詢記錄數量,並最終執行查詢操作。

  Criteria接口:Criteria接口與Query接口非常類似,允許創建並執行面向對象的標准化查詢。值得注意的是Criteria接口也是輕量級的,它不能在Session之外使用。

  Configuration類:Configuration 類的作用是對Hibernate 進行配置,以及對它進行啟動。在Hibernate 的啟動過程中,Configuration 類的實例首先定位映射文檔的位置,讀取這些配置,然後創建一個SessionFactory對象。雖然Configuration 類在整個Hibernate 項目中只扮演著一個很小的角色,但它是啟動hibernate 時所遇到的第一個對象。

 

Hibernate的工作流程:

   工作流程圖:  

        

 Hibernate持久化操作的七個步驟:

  1.創建Configuration對象,並加載cfg.xml配置文件;(配置文件可以通過Eclipse自動生成)

  2.通過Configuration對象構建SessionFactory工廠;

  3.通過SessionFactory工廠打開一個Session會話;

  4.開啟事務;(查詢方法可省略)

  5.用Session會話進行數據庫及持久化對象的CRUD操作;

  6.提交事務;(查詢方法可省略)

  7.關閉會話;

        代碼如下:

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Restrictions;



public class HibernateTest {

    public void Test(){
        //創建Configurtion對象並加載cfg.xml配置文件
        Configuration conf = new Configuration().configure("hibernate.cfg.xml");
        //構建SessionFactory工廠
        SessionFactory sessionFactory = conf.buildSessionFactory();
        //打開Session會話
        Session session = sessionFactory.openSession();
        //開啟事務(增刪改)需要開啟事務 查詢可以不用開啟事務
        Transaction transaction = session.beginTransaction();
        
        //創建Users類對象
        Users users = new Users();
        
        /**
         * Session中封裝的幾個常用的方法
         */
        //調用Session中添加的方法
        session.save(users);
        //調用Session中刪除的方法
        session.delete(users);
        //調用Session中修改的方法
        session.update(users);
        //調用Session中根據主鍵查詢某個類的方法
        session.get(Users.class,users.getId());
        
        
        //根據HQL語句查詢
        String hql = "from Users";
        Query query = session.createQuery(hql);
        List<Users> userList = query.list();
        
        
        //根據SQL語句查詢
        String sql = "select * from Users";
        SQLQuery sqlQuery = session.createSQLQuery(sql);
        List<Users> sqlUsersList = sqlQuery.list();
        
        
        //根據你給的Bean.class類來指定查詢哪個類
        Criteria criteria = session.createCriteria(Users.class);
        //用Criteria對象來添加條件(括號中用Restrictions對象來選擇你要添加哪一種條件)
        criteria.add(Restrictions.ilike("name", "華盛頓%"));
        
        /**
         * 提交事務後將對數據庫進行增刪改查操作
         * 可以通過條件判斷來確定是否提交事務
         * 例如:
         *         如果程序運行正常提交事務
         *         否則讓事務回滾
         *         回滾後將不對數據庫進行操作
         * 事務的回滾:        transaction.rollback();
         */
        //提交事務  
        transaction.commit();
            
        
        //關閉Session會話釋放資源
        session.close();
  
    }
    
}

 

 

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved