1. 程式人生 > >hibernate-筆記

hibernate-筆記

cas 需要 cal 文件名 狀態 es2017 筆記 javabean jar

什麽是 hibernate 框架

    1.hibernate 框架應用在 javaee 三次結構中 dao 層框架

    2.dao 層裏面對數據庫做curd 操作, 使用hibernate

      做crud 操作, hibernate 底層代碼就是jdbc, hibernate

      對 jdbc 進行封裝,使用hidernate 好處,不需要寫復雜的jdbc 代碼了,不需要寫sql 語句實現。

什麽是orm 思想

    1.hidernate 使用orm 思想對數據庫進行crud 操作

    2.web 階段學習, javabean, 更正叫法為實體類

    3.orm object relational mapping, 對象關系映射

      1.讓實體類和數據庫表進行一一對應關系。

        讓實體類首先和數據表對象,

        讓實體類屬性 表裏面字段對應

      2.不需要直接操作數據庫,而操作表對應實體類對象。

搭建 hibernate 環境

    第一步:導入hibernate jar

      技術分享

技術分享

    

    因為用hibernate 的時候,有日誌文件輸出,hibernate 本身沒有

      日誌輸出的jar 包,導入其他日誌輸出的jar

第二步創建實體類

    技術分享

      

    1.使用hibernate 的時候,不需要自己手動創建表hibernate 會自動創建好。

第三步,配置數據庫和實體類一一對應關系。(映射)

      使用配置文件來完成映射的關系。

        1.創建xml 格式的配置文件

          映射配置文件名稱和位置沒有固定的要求建議,在實體類所在包裏創建,實體類名稱 hbm.xml

        2.配置是xml格式,在配置文件中首先引入xml約束

          學過約束dtd , schema, hibernate 裏面引入的約束dtd 約束

      技術分享

      3.配置映射關系

        <hibernate-mapping>

            <!--1.配置類和表對應

                class 標簽

                 name 屬性,實體類全路徑

                table 屬性,數據庫表名稱

            -->

          <class name="cn.itcast.entity.User" table="t_user">

                <!-- 2.配置實體類id 和表id 對應

                    hibernate 要求實體類有一個屬性唯一值

                    hibernate 要求表有字段作為唯一值

                -->

              <!-- id 標簽

                  name 屬性, 實體類裏面id 屬性名稱

                  column 屬性, 生成的表字段名稱

              -->

          <id name="uid" column="uid">

            <!-- 設置數據庫表id增長策略

              native 生成表id 值就是主鍵自動增長

            -->

            <generator class="native"></generator>

          </id>

          <!-- 配置其他屬性和表字段對應

                name 屬性,實體類屬性名稱

              column 屬性,字段名稱

          -->

          <propert name="username" column="username"></propert>

          <propert name="password" column="password"></propert>

          <propert name="address" column="address"></propert>

        </class>

      </hibernate-mapping>

第四步創建hibernate 的核心配置文件

    1.核心配置文件格式xml,但是核心配置文件

      名稱和位置固定的,位置必須在src

      名稱必須 hibernate.cfg.xml

      技術分享

    2.引入dtd 約束

      <!DOCTYPE hibernate-configuration PUBLIC

          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

    3.hibernate 操作過程中,只會加載核心配置文件

      其他配置文件不會加載。

        第一部分,配置數據庫的信息

          <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

          <property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>

          <property name="hibernate.connection.username">root</property>

          <property name="hibernate.connection.password">root</property>

        第二部分,配置hibernate 信息

          <!-- 第二部分,配置hibernate 信息 -->

          <!-- 輸出底層的sql語句 -->

            <property name="hibernate.show_sql">true</property>

          <!-- 輸出底層sql語句格式 -->

            <property name="hibernate.format_sql">true</property>

          <!-- hibernate 幫創建表,需要配置之後

              update: 如果有表進行更新,如果沒表進行創建

          -->

              <property name="hibernate.hbm2ddl.auto">update</property>

        <!-- 配置數據庫的方言

            在mysql 裏面實現分頁, 關鍵字limit ,只能使用mysql裏面

              在oracle 數據庫裏面 實現分頁 rownum

              讓hibernate 框架識別不同數據庫的語句

          -->

          <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

      實現添加操作

        第一步 加載hibernate 核心文件

        第二步 創建 SessionFactory 對象

        第三步 使用SessionFactory 創建session 對象

        第四步 開啟事務

        第五步 寫具體邏輯 crud 操作

        第六步 提交事物

        第七步 關閉資源

     Hibernate 核心api

        Configuration

          1.代碼

            Configuration cfg = new Configuration();

            cfg.configure();

            Session Factory

        Session

          session 類似於jdbc connection

          調用session 裏面的方法實現 crud 操作

            1.添加 save 方法

            2.修改 update 方法

            3.刪除 delete 發放

            4 根據id 查詢 get 方法。

          session 對象單線程

        Transaction

          1.事務對象

            開啟事務對象

              Transaction tx = session.beginTransaction();

            事務提交回滾方法。

              tx.commit();

              tx.rollback();

            事務四個概念

              原子性(一組要麽都成功,要麽都失敗),一致性,隔離性,持久性

      工具類是抽取

        技術分享

      

    實體類的編寫規則

      1.實體類裏面屬性私有的

      2.私有屬性使用公開的set get 方法進行操作。

      3.要求實體類有唯一屬性作為唯一值(一般都使用id值)

      4.實體類屬性建議不適用基本數據類型,使用基本數據類型對應的包裝類型。

  hibernate 主鍵生成策略     

      實體類的操作

      添加操作

      根據id 查詢

      調用session 裏面的get 方法實現

        // 添加功能

          User user = new User();

          user.setUsername("小王");

          user.setPassword("250");

          user.setAddress("日本");

        // 調用session 的方法實現添加

          session.save(user);

      技術分享

    修改操作

      先查詢,修改值

      1根據id 查詢,返回對象

      技術分享

    刪除操作

      技術分享

    實體類對象狀態

      1.瞬時態,對象裏面沒有id值,對象與session 沒關聯。

      2.持久態 對象裏面有id 值,對象與session 有關聯。

      3.托管態 對象有id值,對象與sesion 沒關聯   

    hibernate 一級緩存

  技術分享

  hibernate 事務操作

        事務相關概念

技術分享

hibernate-筆記