Hibernate 小階段總結

来源:http://www.cnblogs.com/yejiaojiao/archive/2016/08/28/5807426.html
-Advertisement-
Play Games

(一)Hibernate入門 通俗的話來說:Hibernate是用於面向對象操控資料庫,對JDBC進行輕量級封裝。(在java世界中傳統的來說是JDBC訪問資料庫。) 1)Hibernate定性:對象關係映射框架。(底層依舊是JDBC) 2)Hibernate框架的結構圖 解析:Java Appli ...


(一)Hibernate入門

      通俗的話來說:Hibernate是用於面向對象操控資料庫,對JDBC進行輕量級封裝。(在java世界中傳統的來說是JDBC訪問資料庫。)

      1)Hibernate定性:對象關係映射框架。(底層依舊是JDBC)

      2)Hibernate框架的結構圖

      

        解析:Java Application 應用程式

             Persistent Object 持久化對象

           Hibernate(Configuration、Session Factory、Session、 Transation、Query、Criteria)六大介面

           JNDI:(Java Naming and Directory Interface)是java的命名與目錄介面 

             JDBC:(Java Date Base Connectivity)資料庫連接,是一種執行語句的Java API

           JTA:(Java Transaction API)全局事務處理 

      3)什麼是ORM?

        ORM是對象關係映射(英語:Object Relation Mapping,簡稱ORM,或O/RM,或O/R mapping),

        是一種程式技術,用於實現面向對象編程語言里不同類型系統的數據之間的轉換。

        從效果上說,它其實是創建了一個可在編程語言里使用的“虛擬對象資料庫”。

      4)什麼是持久化?

        持久化是程式數據在瞬時狀態和持久狀態間轉換的過程

 

      POJO(plain ordinary java object) 簡單無規則java對象純的傳統意義的java對象。就是說在一些Object/Relation Mapping工具中,

      能夠做到維護資料庫表記錄的persisent object完全是一個符合Java Bean規範的純Java對象,沒有增加別的屬性和方法。我的理解就是

      最基本的Java Bean,只有屬性欄位及setter和getter方法。 

      解析一:一個POJO(Plain Ordinary Java Object普通的java對象)持久化以後就是PO

             JavaBean=POJO

             PO=POJO+xml配置
           直接用它傳遞、傳遞過程中就是DTO(Data Transefer Object)
            直接用來對應表示層就是VO

      解析二:其對象或實例將存儲在資料庫表中的Java類在Hibernate中稱為持久化類

          PO=JavaBean+xml配置

          POJO名稱用於強調一個給定的對象是一個普通的Java對象,而不是一個特殊的對象,好更不是Enterprise JavaBean(ORM框架的實現產品)。

 

      5)持久化對象的唯一標識是OID

          解析:我們都知道,Java中安記憶體地址不同區分同一個類的不同對象

                         關係資料庫用主鍵區分同一條記錄

                         Hibernate使用OID來建立記憶體中的對象和資料庫中記錄的對應關係

      01.什麼是OID?

        解析:OID 是持久化類(Student)與數據表主鍵對應屬性, 用來唯一區分持久化對象。

      02.儘量使用包裝類

          解析:一個學生成績為0,無法區分是參加了考試考取了0分,還是沒有成績。

             如果使用包裝類,資料庫就會存入null,證明該學生沒有參加考試

        區別:java的包裝類和基本數據類型

          Java的基本類型包裝類:

          Integer 、Long、Short、Byte、Character、Double、Float、Boolean、BigInteger、BigDecmail

          其中BigInteger、BigDecimal沒有相對應的基本類型,主要應用於高精度的運算,BigInteger 支持任意精度的整數,BigDecimal支持任意精度帶小數點的運算。

          Java語言提供了八種基本類型:(六種數字類型(四個整數型,兩個浮點型),一種字元類型,還有一種布爾型。 )
            整數:包括int,short,byte,long ,初始值為0
            浮點型:float,double ,初始值為0.0
            字元:char ,初始值為空格,即'' ",如果輸出,在Console上是看不到效果的。
            布爾:boolean ,初始值為false

      6)主鍵生策略(基本)

        

       * increment

            由hibernate完成 主鍵遞增,

          原理:select max(id) , insert時max(id)+1 ,完成主鍵遞增

          優點:跨資料庫

          缺點:多線程併發訪問問題(第一個線程執行成功,第二個線程報錯)

       * identity

         由底層資料庫來完成自增 ,要求資料庫必須支持自增主鍵  mysql支持 ,oracle不支持

         * sequence

           編號列生成由底層資料庫提供序列,來完成主鍵自增,要求資料庫必須支持序列 mysql不支持,oracle支持

           create sequence myseq; 創建序列

         insert into customer values (myseq.nextval); 插入數據時調用序列,序列+1

        * native

          採用資料庫支持自增策略, mysql就用identity 、oracle就用sequence

          策略1) ---> 策略4) 要求資料庫主鍵必須為數字 ,因為只有數字才能自增

       * uuid

          32位 唯一字元串, 主鍵使用varchar 類型

          真實開發中,用程式提供uuid值

       *assigned

         手動指定主鍵的值,該主鍵一般有實際意義,例如訂單單號(20160114-A002)20160114-B001  20160114-C002。

     7)Hibernate中Java對象的三種狀態之間的轉換

        

        

      8)臟檢查和緩存機制

        什麼是臟檢查:當事務提交時,Hibernate會對session中的PO(持久化對象)進行檢測,判斷持久化對象的狀態是否發生了改變,如果發生了改變就會將改變更新到資料庫中。

               (現數據比原數據是否改變) 

        Session會話中flush()方法和clear()方法的共同點都是往資料庫

                           Flush()資料庫同步的不清除緩存的

                           Clear()清除緩存的

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 首先需要導入包 然後寫方法,由於我使用的框架全部是spring 此處我只寫入實現層和控制層代碼 其中有個selectMatYearPlan(MAT_NO_, MAT_DESC_, MAT_TYPE_, MAT_SPEC_CAT_CODE_, COM_CODE_, DEPT_CODE_, YEAR_, ...
  • 應對場景: 相對於開發在一臺電腦上運行的單個程式,如何讓一個應用中的多個獨立的程式協同工作是一件非常困難的事情。開發這樣的應用,很容易讓很多開發人員陷入如何使多個程式協同工作的邏輯中,最後導致沒有時間更好地思考和實現他們自己的應用程式邏輯;又或者開發人員對系統邏輯關註不夠,只是用很少的時間開發了一 ...
  • 文件操作 1.能調用方法的一定是對象,比如數值、字元串、列表、元組、字典,甚至文件也是對象,Python中一切皆為對象。 2.三種基本的文件操作模式:r(only-read)、w(only-write)、a(append) 對文件進行操作的流程:第一,建立文件對象。第二,調用文件方法進行操作。第三, ...
  • 使用Maven管理項目,pom文件為: 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="h ...
  • 其他鏈接:http://blog.csdn.net/jinwufeiyang/article/details/52338268 如何將我們網站的其它內容(如菜單、標題等)做國際化處理呢?這就是本篇要將的內容—>國際化。 在項目的spring.xml文件添加的內容如下 [html] view plai ...
  • 時隔 15.6 個月,終於發佈了一個新版本 v1.1.0。 新版本除了包含了這些日子收集到的無數的小改進及 bug fixes,也有一些新功能。本文嘗試從使用者的角度,簡單介紹一下這些功能和沿由。 ...
  • 在學習python之前,我也學習過C ,C++ ,Java ,PHP ,javascript,前端也學習過。但是在學習Python的這段時間里,多多少少也感覺到Python在語法方面的不同和特殊性。 今天,我們就來聊聊Python都有哪些語法引起過我們的好奇。 1.註釋方面,一般C , Java , ...
  • A集成代碼生成器 [正反雙向(單表、主表、明細表、樹形表,開發利器)+快速構建表單; freemaker模版技術 ,0個代碼不用寫,生成完整的一個模塊,帶頁面、建表sql腳本,處理類,service等完整模塊B 集成阿裡巴巴資料庫連接池druid; 資料庫連接池 阿裡巴巴的 druid。Druid在 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...