淺析java程序中hibernate的應用總結
我們知道如果用java連接數(shù)據庫,大量的SQL代碼,我們就想通過一種工具來操作數(shù)據庫,
我們首先想到的就是JDBC,但是想更好的針對類的屬性進行操作,我們會選擇Hibernate。
那么Hibernate 原理是什么呢?
hibernate可以理解為是一個中間件它負責把java程序的sql語句接收過來發(fā)送到數(shù)據庫,
而數(shù)據庫返回來的信息hibernate接收之后直接生成一個對象傳給java。
一 首先我們先了解一下hibernate的工作7個流程:
1.讀取并解析配置文件
2.創(chuàng)建SessionFactory
3.打開Session
4.開始一個事物
5.持久化操作
6.提交事務
7.關閉Session
二 接著我們要理解實體對象的生命周期是Hibernate 的三種狀態(tài)
瞬時狀態(tài)(Transient)
剛用new語句創(chuàng)建,還沒有被持久化,且不處于Session的緩存中
持久狀態(tài)(Persistent)
已經被持久化,且加入到Session的緩存中
游離狀態(tài)(Detached)
已經被持久化,但不再處于Session的緩存中
三 持久化和ORM也是Hibernate中需要理解的一部分。
持久化:數(shù)據模型(內存)《--》存儲模型(持久化設備),在Java中說持久化,通常指的是使用SQL將數(shù)據存儲在關系型數(shù)據庫中。
ORM是持久化的一種解決方案,主要是把對象模型和關系型數(shù)據庫關系模型映射起來,并且使用元數(shù)據對這些映射進行描述。
Hibernate中必須要搭建項目框架編寫hibernate配置文件、實體映射文件
創(chuàng)建項目并導入jar包
創(chuàng)建Hibernate配置文件
用于配置數(shù)據庫連接
運行時所需的各種屬性
默認文件名為“hibernate.cfg.xml”
測試連接
使用Hibernate完成數(shù)據增刪改操作
1.創(chuàng)建實體類
2.創(chuàng)建和配置映射文件
3.主鍵映射
4.主鍵生成策略
5.在主配置文件中添加實體映射文件路徑
6.數(shù)據庫操作
7.單表增刪改查
四 Hibernate 支持兩種主要的查詢方式
(1)HQL(Hibernate Query Languge,Hibernate 查詢語言)查詢
是一種面向對象的查詢語言,其中沒有表和字段的概念,只有類、對象和屬性的概念
HQL 是應用較為廣泛的方式。
(2) Criteria 查詢
又稱為“對象查詢”,它用面向對象的方式將構造查詢的過程做了封裝。
五 在運用Hibernate時,我們應該注意一些事情
(1)Hibernate是如何延遲加載?
1.Hibernate延遲加載實現(xiàn):a)實體對象 b)集合(Collection)
2.Hibernate3提供了屬性的延遲加載功能
當Hibernate在查詢數(shù)據的時候,數(shù)據并沒有存在與內存中,當程序真正對數(shù)據的操作時,對象才存在與內存中,就實現(xiàn)了延遲加載,他節(jié)省了服務器的內存開銷,從而提高了服務器的性能。
(2)說下Hibernate的緩存機制
1. 內部緩存存在Hibernate中又叫一級緩存,屬于應用事物級緩存
2. 二級緩存:
a) 應用及緩存
b) 分布式緩存
條件:數(shù)據不會被第三方修改、數(shù)據大小在可接受范圍、數(shù)據更新頻率低、同一數(shù)據被系統(tǒng)頻繁使用、
非關鍵數(shù)據
c) 第三方緩存的實現(xiàn)
- 在Java的Hibernate框架中對數(shù)據庫數(shù)據進行查詢操作
- java Hibernate延遲加載
- 從最基本的Java工程搭建SpringMVC+SpringDataJPA+Hibernate
- java Hibernate 一對多自身關聯(lián)問題
- 在Java的Hibernate框架中使用SQL語句的簡單介紹
- Java的Hibernate框架中用于操作數(shù)據庫的HQL語句講解
- JAVA+Hibernate 無限級分類
- 詳解Java的Hibernate框架中的緩存與二級緩存
- java優(yōu)化hibernate性能的幾點建議
- java Hibernate多對多映射詳解及實例代碼
相關文章
分析Java中ArrayList與LinkedList列表結構的源碼
這篇文章主要介紹了Java中ArrayList與LinkedList列表結構的源碼,文章最后對LinkedList和ArrayList以及Vector的特性有一個對比總結,需要的朋友可以參考下2016-05-05
springboot整合mybatis中的問題及出現(xiàn)的一些問題小結
這篇文章主要介紹了springboot整合mybatis中的問題及出現(xiàn)的一些問題小結,本文給出了解決方案,需要的朋友可以參考下2018-11-11
Spring MVC 關于controller的字符編碼問題
在使用springMVC框架構建web應用,客戶端常會請求字符串、整型、json等格式的數(shù)據,通常使用@ResponseBody注解使 controller回應相應的數(shù)據而不是去渲染某個頁面。2017-03-03
詳解Spring Data Jpa當屬性為Null也更新的完美解決方案
這篇文章主要介紹了詳解Spring Data Jpa當屬性為Null也更新的完美解決方案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-02-02
Spring Boot中@RequestParam參數(shù)的5種情況說明
這篇文章主要介紹了Spring Boot中@RequestParam參數(shù)的5種情況說明,具有很好的參考價值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08

