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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...