• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • Hibernate-01-API及環境搭建

    標簽: hibernate

    一.Hibernate簡介

    Hibernate框架是主流JAVA持久層框架之一,它具有靈活性強,易于操作的特點,能夠大大簡化程序的代碼量,提高工作效率
    Hibernate是一個開放源代碼的ORM(Object Relational Mapping,即對象關系映射)框架,我對ORM框架的理解是,將數據庫表和持久化類對應起來,使用持久化類對數據庫中的表進行操作,ORM框架體現了面向對象的思想。

    在項目中使用Hibernate框架的步驟:

    1.導入jar包
    2.為每個持久化類創建映射文件
    3.配置核心配置文件
    4.使用Hibernate的API操作數據庫

    二.Hibernate的映射文件

    持久化類TUser 及其對應的映射文件TUser.hbm.xml

    @Entity
    @Table(name = "user", schema = "shop", catalog = "")
    public class TUser {
    
        private String uid;
        private String username;
        private String password;
    
        @Id
        @Column(name = "uid", nullable = false, length = 100)
        public String getUid() { return uid; }
        public void setUid(String uid) { this.uid = uid; }
    
        @Basic
        @Column(name = "username", nullable = true, length = 20)
        public String getUsername() { return username; }
        public void setUsername(String username) {
            this.username = username;
        }
    
        @Basic
        @Column(name = "password", nullable = true, length = 20)
        public String getPassword() { return password; }
        public void setPassword(String password) {
            this.password = password;
        }

    映射文件TUser.hbm.xml

    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
        <!--建立持久化類和數據庫表的映射關系-->
        <class name="com.itheima.domain.TUser" table="user" schema="shop">
            <!--建立類中屬性和表中主鍵的對應關系-->
            <id name="uid">
                <column name="uid" sql-type="varchar(100)" length="100"/>
            </id>
    
            <property name="username">
                <column name="username" sql-type="varchar(20)" length="20" not-null="true"/>
            </property>
            <property name="password">
                <column name="password" sql-type="varchar(20)" length="20" not-null="true"/>
            </property>
        </class>
    </hibernate-mapping>

    映射文件的主要標簽及其屬性的含義:

    class標簽:用來建立類和表的映射關系

    name屬性:類的全名
    table屬性:表名(如果類名和表名一致,table屬性可省略)
    catalog屬性:數據庫名稱,可省略

    id標簽:建立類中屬性和表中主鍵的對應關系

    name屬性:類中的屬性名
    column屬性:表中的字段名(如果類的屬性名和表的字段名一致,column屬性可省略)

    property標簽:建立類中的屬性和表中字段的對應關系

    name屬性:類中的屬性名
    column屬性:表中的字段名(如果類的屬性名和表的字段名一致,column屬性可省略)

    column 標簽:表中字段的配置

    name屬性:表中的字段名
    length屬性:字段的長度
    sql-type屬性:字段對應的SQL類型

    三.Hibernate的核心配置文件

    Hibernate的核心配置文件,包含了連接持久層與映射文件所需要的基本信息,其配置文件有兩種格式:
    1.以.properties為后綴名的鍵值對文件,使用鍵值對的方式記錄配置信息,形式簡便但是可讀性很差。默認文件名為hibernate.properties
    2.以.cfg.xml為后綴名的XML文件,可讀性強,比較常用,默認文件名為hibernate.cfg.xml
    hibernate.cfg.xml配置文件的配置在系列博客中的第二篇Hibernate-02-核心配置文件Hibernate.cfg.xml中有更詳細的解釋

    XML形式的Hibernate核心文件的配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Hibernate配置文件的DTD約束,版本是3.0(使用中注意DTD約束中的版本要和jar包的版本一致)-->
    <!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
            <!--1 配置數據庫連接信息 -->
            <!--1.1 數據庫驅動 -->
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <!--1.2 數據庫url地址 -->
            <property name="hibernate.connection.url">jdbc:mysql:///shop</property>
            <!--1.3 數據庫連接用戶名 -->
            <property name="hibernate.connection.username">root</property>
            <!--1.4 數據庫連接密碼 -->
            <property name="hibernate.connection.password">1234</property>
            <!--1.5 數據庫方言 -->
            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    
            <!--2 Hibernate的常用設置(可選配置) -->
            <!--2.1 Hibernate生成的sql語句打印到控制臺 -->
            <property name="hibernate.show_sql">true</property>
            <!--2.2 Hibernate生成的sql語句格式化(語法縮進) -->
            <property name="hibernate.format_sql">true</property>
            <!--2.3 自動導出表結構,一般用update-->
            <property name="hibernate.hbm2ddl.auto">update</property>
            <!--2.4 指定hibernate操作數據庫時的隔離級別 -->
            <property name="hibernate.connection.isolation">4</property>
            <!--2.5 設置session與當前線程綁定 -->
            <property name="hibernate.current_session_context_class">thread</property>
    
            <!--3 加載映射文件 -->
            <mapping resource="cn/ssh/domain/User.hbm.xml" />
            <mapping resource="cn/ssh/domain/Product.hbm.xml" />
    
        </session-factory>
    </hibernate-configuration>

    四.Hibernate的API

    4.1 Configuration類

    Configuration類的作用是對Hibernate進行配置,在Hibernate的啟動過程中,Configuration類的實例首先定位映射文件的位置,然后讀取這些配置,并創建一個SessionFactory對象。Configuration是Hibernate啟動時遇到的第一個對象
    默認的創建Configuration類的實例的方式:

    Configuration configuration = new Configuration().configure();

    默認情況下Configuration的實例對象會到項目根目錄下讀取hibernate.cfg.xml配置文件
    可以自定義hibernate.cfg.xml配置文件的位置,例如:

    //hibernate.cfg.xml配置文件存放在/config文件夾下
    Configuration configuration = new Configuration().configure("/config/hibernate.cfg.xml");

    Configuration對象還可以用來加載映射文件:

    Configuration configuration = new Configuration().configure();
    configuration.addResource("com.ssh.domain.hbm.xml")

    4.2 SessionFactory接口

    SessionFactory接口負責初始化Hibernate,存儲臨時數據,創建Session對象。SessionFactory接口的實現用到了工廠模式,所以它又被稱作Session工廠。
    SessionFactory在Hibernate中起到緩沖區的作用,Hibernate將自動生成的SQL語句,映射數據等放在這個緩沖區中。同時SessionFactory保存了數據庫的配置信息,及數據庫表和持久化類的映射信息,維護了二級緩存
    SessionFactory實例通過Configuration對象建立

    SessionFactory sessionFactory = configuration.buildSessionFactory();

    4.3 Session接口

    Session用于和數據庫進行交互,它的主要功能是管理所有的持久化類,對持久化類對應的數據庫表進行增刪改查等操作
    獲取Session實例的兩種方法:

    /**
     * SessionFactory直接創建一個新的Session實例,操作完數據庫后需要手動調用close方法關閉資源
     */
    Session session  = sessionFactory.openSession( );
    /**
     * 創建的Session實例會被綁定到當前線程中,它在提交或回滾操作后會自動關閉Session是線程不安全的,
     *實際使用中應該避免對Session實例的并發訪問。
     */
    Session session  = sessionFacotry.getCurrentSession( );
    創建的Session實例會被綁定到當前線程中,它在提交或回滾操作后會自動關閉
    Session是線程不安全的,應該避免對Session實例的并發訪問。

    Session中存儲著Hibernate的一級緩存
    Session的常用方法:

    方法名 功能
    save(),updtate(),saveOrUpdate() 增加修改數據庫中的數據
    delete() 刪除數據
    get(),load() 根據主鍵查詢
    createQuery(),createSQLQuery 用于查詢數據庫中的數據
    createCriteria 用于進行條件查詢

    4.4 Treanaction

    Transaction接口主要用于管理事務,它是Hibernate的數據庫事務接口,對底層的事務接口進行了封裝。
    Transaction接口開啟事務的方式:

    Transaction transaction = session.beginTransaction();

    Transaction接口中操作事務的方法:

    方法名 功能
    commit() 提交關聯的sesson實例,將對數據的操作同步到數據庫中
    rollback() 撤銷數據庫事務操作,操作數據時若發生錯誤調用此方法

    五.簡單使用Hibernate框架

    搭建Hibernate的環境,并使用Hibernate對數據庫進行簡單的CURD操作

    5.1 導入jar包

    Hibernate的官網下載Hibernate的最新版本
    這里寫圖片描述
    在hibernate-search-5.8.0.Final\dist\lib\required路徑下有Hibernate的主要的jar包,導入進項目即可
    這里寫圖片描述

    5.2 編寫數據庫表和持久化類的映射文件

    可以使用****生成持久化類和映射文件,比較方便,Hibernate的****

    5.3 編寫Hibernate的配置文件

    Hibernate的核心配置文件hibernate.cfg.xml

    5.4 使用Hibernate框架操作數據庫

    public class HbProductDaoImpl {
    
        /**1.使用Configuration對象加載配置文件*/
        org.hibernate.cfg.Configuration configuration = new org.hibernate.cfg.Configuration().configure();
        /**2.創建一個SessionFactory類型的對象*/
        SessionFactory sessionFactory = configuration.buildSessionFactory();
    
        public List<TProduct> findProductByword(String word) throws SQLException {
    
            /**3.使用sessionFactory對象創建session對象*/
            Session session = sessionFactory.openSession();
    
            /**4.使用session開啟事務*/
            Transaction transaction = session.beginTransaction();
    
            String hql = "from TProduct where pname = '小米'";
            /**5.1 調用session中操作數據庫的方法創建查詢*/
            Query query = session.createQuery(hql);
            /**5.2 調用session中操作數據庫的方法執行查詢*/
            List<TProduct> list = query.list();
    
            /**6 使用Transaction接口的實例提交事務*/
            transaction.commit();
            /**7. 關閉session釋放資源*/
            session.close();
    
            return list;
        }
    版權聲明:本文為eagleuniversityeye原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/eagleuniversityeye/article/details/78033157

    智能推薦

    【學習筆記-SSH框架】Hibernate入門-筆記01-搭建Hibernate應用環境及實現增刪查改功能、以及Query、Criteria查詢

    Hibernate入門-筆記01-搭建Hibernate應用環境及實現增刪查改功能、以及Query、Criteria查詢 目錄 使用Maven搭建Hibernate項目 自頂向下開發Hibernate應用步驟 封裝Hibernate工具類 實現增刪查改功能 使用Query進行HQL查詢 使用Criteria進行條件查詢 POJO狀態 1. 使用Maven搭建Hibernate項目 在IDE中創建m...

    Hibernate(2)_Hibernate 環境搭建

    本系列博客匯總在這里:Hibernate 匯總 環境搭建 一、文件下載 二、搭建環境 1、建立一個 java 項目 2、導包 3、創建 hibernate.cfg.xml 4、創建實體類(model) 源碼工程文件為: 一、文件下載 官網下載地址 :http://hibernate.org/orm/downloads/ 本教程使用的:點擊下載,提取碼:bszm。 官方文檔:點擊下載,提取碼:qkb...

    springMVC 01 ------- springMVC入門及環境搭建

    一、springMVC入門 SpringMVC簡介 MVC 是把 Web 應用程序分為三層,分別是: 控制器(Controller):負責接收并處理請求,響應客戶端; 模型(Model):模型數據,業務邏輯; 視圖(View):呈現模型,與用戶進行交互; SpringMVC相當于spring的一個子框架,所以SpringMVC與spring能夠天然的結合使用,無需整合。 訪問的流程: Spring...

    業務基礎環境搭建及api網關

    API網關 在微服務架構中,通常會有多個服務提供者。設想一個電商系統,可能會有商品、訂單、支付、用戶等多個類型的服務,而每個類型的服務也會隨著整個系統體量的增大也會隨之增長和變更。作為UI端,在展示頁面時,可能需要從多個微服務中聚合數據,而且服務的劃分位置結構可能會有所改變。網關就可以對外暴露聚合API, 屏蔽內部微服務的微小變動,保持整個系統的穩定性。 api網關有點類似于設計模式中的facad...

    hibernate的環境搭建及簡單的增刪改查

    首先我們需要導入hibernate的jar包,在lib文件夾下有一個必須的文件夾導入里面的jar包即可 第二步創建ORM映射文件放在bean包下,和要映射的bean在一起,然后我們導入約束,我們不用死記硬背,我們可以在 該包下找到hibernate-mapping-3.0.dtd文件打開并復制其內容 然后打開window--Preferences--搜索cata 設置約束文件的查找路徑,設為本地文...

    猜你喜歡

    Hibernate環境搭建

    Hibernate可以用在java的任何項目里,下面Hibernate環境的搭建 1、新建java項目(如圖所示) 2、加入相關的jar包(如下圖所示) 另一種方法采用單獨建一個庫,然后將相關jar包加到自己建的庫里,這樣用的時候更加方便引入(如圖所示) 下面是加入相關的jar文件:HIBERNATE_HOME/lib/*.jar 下面是加入核心jar文件:HIBERNATE_HOME/hiber...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    精品国产乱码久久久久久蜜桃不卡