Hibernate 入門

 

 提問:

(這一些題是答辯或是面試可能遇到的或是我常常搞混的題)java

1  JDBC是什麼?程序員

JDBC(Java DataBase Connectivity,java數據庫鏈接)是一種用於執行SQL語句的Java API,能夠爲多種關係數據庫提供統一訪問,它由一組用java語言編寫的類和接口組成。面試

2  JDBC遇到的一些麻煩是什麼?數據庫

   1 從效率上來講,每次操做都要從新鏈接數據庫,對數據庫的壓力比較大。編程

   2 從代碼上考慮,每次執行的語句都是通過編譯及鏈接的控制,還有考慮事務提交回滾什麼的,程序員的重複性和驗證性的工做量加大。緩存

   3 java提倡的是面向對象編程,可是數據庫是對數據進行操做。 session

3 三層架構是哪三成?數據結構

 界面層(User Interface layer)、業務邏輯層(Business Logic Layer)、數據訪問層(Data access layer)。架構

4 數據庫分頁的關鍵字(oracle,MySQL 以及 SQL Server)?併發

   Oracle---》 ROWNUM ;MySQL---》limit  ;SQL Server---》top

5 談談你對hibernate緩存的瞭解?

 

開始今天的知識點總結

 

1 認識hibernate

hibernate是輕量級JavaEE應用的一個持久層框架。它的做用在於管理Java實體類到數據庫表之間的映射關係,而且提供數據查詢和獲取數據的方法,能夠大幅度的縮短使用JDBC處理數據持久化的時間。 

java則是一門面向對象的編程語言,hibernate完成了對象模型和基於SQL關係模型的映射關係,使得程序員能夠只用這個來面向對象編程。

 

2 對象--關係映射

ORM全稱Object/Relation Mapping,對象/關係數據庫映射。該框架的基本特徵就是完成面向對象的編程語言到關係數據庫之間的映射

由於java一開始項目就是面向對象分析,面向對象設計,面向對象編程,因此關係數據庫就把數據庫的數據包裝成面向對象模型,這就是ORM框架。

面向對象編程的優勢:

 

一、      面向對象建模,操做

二、      多態,繼承,封裝

三、      摒棄難以理解的過程

四、      簡單易用,容易理解

關係型數據庫的優勢:

一、      大量數據查詢、排序

二、      集合數據鏈接操做、映射

三、      數據庫訪問的併發、事物

四、      數據庫的約束、隔離

 

結合着兩個的優勢,採用ORM框架後,咱們的應用程序就能夠直接訪問對象的方式對對象進行持久化(CRUD)。

 

基本映射的方式:

   1 數據庫表映射類(實體類———數據庫表):持久化類被映射到一個數據表 ,當使用一個持久類來建立,增長,修改,傷處實例的時候,系統會自動的對這個表進行CRUD操做。

   2 數據表的行映射對象(new實例———行):持久化類會生成不少實例,每一個實例就對應數據庫一行的操做。每一個持久化對象對應數據表的一行記錄。

   3 數據表中的列映射對象的屬性(屬性———字段):持久化類對屬性值進行修改的時候,orm將會轉化成數據庫對應行指定列來改變值。

 

4 Hibernate的介紹

Hibernate是一個面向JAVA環境的對象/關係數據庫映射工具,用來把對象模型表示的對象映射到基於SQL的關係模型數據結構中去 ,Hibernate的目標主要是爲了釋放開發者一般的數據持久化相關的編程的繁重任務。

對於一數據爲中心的程序員來講,hibernate不是最好的方法,可是對於以java爲中心的程序員來講,hibernate是最有用的。

Hibernate還提供數據查詢和獲取數據的方法。

 

5 Hibernate就是一個ORM框架的典型表明;那麼與其餘的ORM框架相比,他的特色在於什麼地方?

一、      開源和免費的License,方便須要時研究源碼,改寫源代碼,進行功能定製。

二、      輕量級封裝,調試容易,減輕程序員負擔。

三、      有可擴展性,API開放,功能不夠用時,本身能夠編碼擴展。

 

6 Hibernate持久化解決方案:?

Hibernate的持久化解決方案用戶將再也不使用jdbc來連接數據庫進行操做了。而是以面向對象的方式進行持久層操做。對於數據的訪問,事務用戶都不用管了。將應用從底層的JDBC中抽象出來,經過配置文件管理底層的JDBC鏈接,讓Hibernate解決持久化訪問的實現。

 

7 hibernate工做原理圖:

 

 

8 理解JAVA對象的3種形態

 1 瞬態 ---對象是經過new出來的,被認爲處於瞬態。

    瞬態對象不會被持久化到數據庫中,也不會被賦予持久化標識(ID),若是程序中失去了瞬態對象的引用,瞬態對象將被垃圾回收機制銷燬。

 2 持久態--- 持久化實例在數據庫中有對應的記錄,並擁有一個持久化標識(id),持久化的實例能夠是剛保存的。也能夠是剛被加載的。不管那種,持久化對象都必須與指定的Hibernate Session關聯。

  Hibernate會檢測處處於持久化狀態對象的改動,在當前操做執行完成時將對象數據寫回數據庫。數據庫與java中的改變是同步的。

 3 遊離態-- 這個實例他曾經處於持久化狀態,但隨着與之關聯的session被關閉,該對象就變成遊離狀態了。

    遊離對象的引用依舊有效,對象能夠繼續被修改,只是不會同步到數據庫中。若是從新讓遊離對象與某個session關聯,該對象會從新轉換爲持久化狀態。

   好比說先關閉了session關聯,在java中改變對象的屬性,這時數據庫數據不會改變,可是當你鏈接到session的時候,數據庫的數據就會改變成你java中相同的數據了。

相關文章
相關標籤/搜索