欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析java程序中hibernate的應(yīng)用總結(jié)

 更新時間:2013年07月22日 11:12:47   作者:  
hibernate可以理解為是一個中間件它負(fù)責(zé)把java程序的sql語句接收過來發(fā)送到數(shù)據(jù)庫,而數(shù)據(jù)庫返回來的信息hibernate接收之后直接生成一個對象傳給java

我們知道如果用java連接數(shù)據(jù)庫,大量的SQL代碼,我們就想通過一種工具來操作數(shù)據(jù)庫,
我們首先想到的就是JDBC,但是想更好的針對類的屬性進(jìn)行操作,我們會選擇Hibernate。

那么Hibernate 原理是什么呢?
hibernate可以理解為是一個中間件它負(fù)責(zé)把java程序的sql語句接收過來發(fā)送到數(shù)據(jù)庫,
而數(shù)據(jù)庫返回來的信息hibernate接收之后直接生成一個對象傳給java。

一  首先我們先了解一下hibernate的工作7個流程:
1.讀取并解析配置文件  
2.創(chuàng)建SessionFactory
3.打開Session
4.開始一個事物
5.持久化操作
6.提交事務(wù)
7.關(guān)閉Session

二 接著我們要理解實體對象的生命周期是Hibernate 的三種狀態(tài)
瞬時狀態(tài)(Transient)
剛用new語句創(chuàng)建,還沒有被持久化,且不處于Session的緩存中
持久狀態(tài)(Persistent)
已經(jīng)被持久化,且加入到Session的緩存中
游離狀態(tài)(Detached)
已經(jīng)被持久化,但不再處于Session的緩存中

三  持久化和ORM也是Hibernate中需要理解的一部分。
持久化:數(shù)據(jù)模型(內(nèi)存)《--》存儲模型(持久化設(shè)備),在Java中說持久化,通常指的是使用SQL將數(shù)據(jù)存儲在關(guān)系型數(shù)據(jù)庫中。
ORM是持久化的一種解決方案,主要是把對象模型和關(guān)系型數(shù)據(jù)庫關(guān)系模型映射起來,并且使用元數(shù)據(jù)對這些映射進(jìn)行描述。

Hibernate中必須要搭建項目框架編寫hibernate配置文件、實體映射文件
創(chuàng)建項目并導(dǎo)入jar包
創(chuàng)建Hibernate配置文件  
用于配置數(shù)據(jù)庫連接
運行時所需的各種屬性

默認(rèn)文件名為“hibernate.cfg.xml”
測試連接
使用Hibernate完成數(shù)據(jù)增刪改操作
1.創(chuàng)建實體類
2.創(chuàng)建和配置映射文件
3.主鍵映射
4.主鍵生成策略
5.在主配置文件中添加實體映射文件路徑
6.數(shù)據(jù)庫操作
7.單表增刪改查

四 Hibernate 支持兩種主要的查詢方式
(1)HQL(Hibernate Query Languge,Hibernate 查詢語言)
查詢
是一種面向?qū)ο蟮牟樵冋Z言,其中沒有表和字段的概念,只有類、對象和屬性的概念
HQL 是應(yīng)用較為廣泛的方式。

(2) Criteria 查詢
又稱為“對象查詢”,它用面向?qū)ο蟮姆绞綄?gòu)造查詢的過程做了封裝。

五 在運用Hibernate時,我們應(yīng)該注意一些事情
(1)Hibernate是如何延遲加載?
    1.Hibernate延遲加載實現(xiàn):a)實體對象 b)集合(Collection)
    2.Hibernate3提供了屬性的延遲加載功能
當(dāng)Hibernate在查詢數(shù)據(jù)的時候,數(shù)據(jù)并沒有存在與內(nèi)存中,當(dāng)程序真正對數(shù)據(jù)的操作時,對象才存在與內(nèi)存中,就實現(xiàn)了延遲加載,他節(jié)省了服務(wù)器的內(nèi)存開銷,從而提高了服務(wù)器的性能。

(2)說下Hibernate的緩存機(jī)制
    1. 內(nèi)部緩存存在Hibernate中又叫一級緩存,屬于應(yīng)用事物級緩存
    2. 二級緩存: 
       a) 應(yīng)用及緩存 
       b) 分布式緩存 
   條件:數(shù)據(jù)不會被第三方修改、數(shù)據(jù)大小在可接受范圍、數(shù)據(jù)更新頻率低、同一數(shù)據(jù)被系統(tǒng)頻繁使用、
        非關(guān)鍵數(shù)據(jù) 
       c) 第三方緩存的實現(xiàn)

相關(guān)文章

  • Spring Boot整合Spring Data Jpa代碼實例

    Spring Boot整合Spring Data Jpa代碼實例

    這篇文章主要介紹了Spring Boot整合Spring Data Jpa代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • java IO流將一個文件拆分為多個子文件代碼示例

    java IO流將一個文件拆分為多個子文件代碼示例

    這篇文章主要介紹了java IO流將一個文件拆分為多個子文件代碼示例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Java使用枚舉實現(xiàn)狀態(tài)機(jī)的方法詳解

    Java使用枚舉實現(xiàn)狀態(tài)機(jī)的方法詳解

    這篇文章主要介紹了Java使用枚舉實現(xiàn)狀態(tài)機(jī)的方法詳解,枚舉類型很適合用來實現(xiàn)狀態(tài)機(jī),狀態(tài)機(jī)可以處于有限數(shù)量的特定狀態(tài),它們通常根據(jù)輸入,從一個狀態(tài)移動到下一個狀態(tài),但同時也會存在瞬態(tài),需要的朋友可以參考下
    2023-11-11
  • Java8新特性Lambda表達(dá)式的一些復(fù)雜用法總結(jié)

    Java8新特性Lambda表達(dá)式的一些復(fù)雜用法總結(jié)

    lambda表達(dá)式是JAVA8中提供的一種新的特性,它支持Java也能進(jìn)行簡單的“函數(shù)式編程”。 下面這篇文章主要給大家介紹了關(guān)于Java8新特性Lambda表達(dá)式的一些復(fù)雜用法的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • Java出現(xiàn)中文亂碼問題分析及解決方案

    Java出現(xiàn)中文亂碼問題分析及解決方案

    在Java開發(fā)中,處理中文亂碼是一個常見的問題,由于字符集和編碼的復(fù)雜性,開發(fā)者可能面臨各種導(dǎo)致亂碼的情況,正確地處理中文字符集對于確保應(yīng)用程序的可靠性和國際化至關(guān)重要,本文給大家介紹了Java中文亂碼分析及解決方案,需要的朋友可以參考下
    2024-02-02
  • Java設(shè)計模式之觀察者模式

    Java設(shè)計模式之觀察者模式

    這篇文章主要介紹了Java設(shè)計模式之觀察者模式,觀察者模式,是一種行為性模型,又叫發(fā)布-訂閱模式,他定義對象之間一種一對多的依賴關(guān)系,使得當(dāng)一個對象改變狀態(tài),則所有依賴于它的對象都會得到通知并自動更新,需要的朋友可以參考下
    2023-11-11
  • Java雙重校驗鎖單例原理

    Java雙重校驗鎖單例原理

    大家好,本篇文章主要講的是Java雙重校驗鎖單例原理,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Mybatis的SqlRunner執(zhí)行流程實現(xiàn)

    Mybatis的SqlRunner執(zhí)行流程實現(xiàn)

    MyBatis提供了一個用于操作數(shù)據(jù)庫的SqlRunner工具類,對JDBC做了很好的封裝,本文主要介紹了Mybatis的SqlRunner執(zhí)行流程實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • 利用Java編寫24點小游戲的實例代碼

    利用Java編寫24點小游戲的實例代碼

    這篇文章主要給大家介紹了關(guān)于如何利用Java編寫24點小游戲的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • java中刪除文件/文件夾的3種方法示例小結(jié)

    java中刪除文件/文件夾的3種方法示例小結(jié)

    這篇文章主要介紹了java中刪除文件/文件夾的3種方法示例小結(jié),第一種是通過io刪除文件,第二種是通過Files.walk刪除文件,第三種是通過 Files.walkFileTree刪除文件,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-10-10

最新評論