Java喬曉鬆-Hibernate原理與應用入門
Hibernate原理與應用
主要內容
引入
安裝配置
基本概念和CURD
HQL和Criteria
關聯對映
繼承對映
集合對映
懶載入
快取
事務
其他
Hibernate不適合的場景
與JPA的整合(annotation方式)
最佳實踐
JDBC資料庫連線
JDBC的優點
直接底層操作,提供了很簡單、便捷的訪問資料庫的方法,跨平臺性比較強。靈活性比較強,可以寫很複雜的SQL語句。
JDBC的缺點
1.因為JAVA是物件導向的,JDBC沒有做到使資料能夠物件導向的程式設計,使程式設計師的思考仍停留在SQL語句上。
2.操作比較繁瑣,很多程式碼需要重複寫很多次。
3.如果遇到批量操作,頻繁與資料庫進行互動,容易造成效率的下降。
引入
模型不匹配(阻抗不匹配)
Java面嚮物件語言,物件模型,其主要概念有:繼承、關聯、多型等;資料庫是關係模型,其主要概念有:表、主鍵、外來鍵等。
解決辦法
1使用JDBC手工轉換。
2使用ORM(Object Relation Mapping物件關係對映)框架來解決。
Hibernate是一個開源ORM框架。
ORM全稱Object Relation Mapping,即物件關係對映。它是一種用來完成物件模型到關係模型的對映技術。
就是把應用程式中的物件資料持久化到關聯式資料庫的表的一種技術。
使用ORM( Object Relation Mapping )框架來解決。主流的ORM框架有JBoss公司的Hibernate、Oracle公司的TopLink、Apache組織的OJB、Sun公司的JDO。
簡單的說:ORM能利用物件導向的思想開放基於關係型資料庫的應用程式,它的主要工作是將物件資料儲存到關聯式資料庫的表中,以及將關聯式資料庫表中資料讀入到物件中。
安裝配置
下載地址http://www.hibernate.org,使用3.3版本。
解壓獲取必需類庫檔案
將下載目錄/hibernate3.jar和/lib下的hibernate執行時必須的包加入classpath中:
配置檔案hibernate.cfg.xml和hibernate.properties,XML和properties兩種,這兩個檔案的作用一樣,提供一個即可,推薦XML格式,下載目錄/etc下是示例配置檔案。
可以在配置檔案指定:
資料庫的URL、使用者名稱、密碼、JDBC驅動類、方言等。
啟動時Hibernate會在CLASSPATH裡找這個配置檔案。
對映檔案(hbm.xml,物件模型和關係模型的對映)。在/eg目錄下有完整的hibernate示例。
快速開始小例子
步驟:
1.新建java專案,並加入相應的jar包,及jdbc驅動。
2.建立持久化類
3. 準備資料庫表
4.建立配置檔案hibernate.cfg.xml
5.建立對映檔案xxx.hbm.xml
6.建立測試檔案
Hibernate.connection.url 表示要連結的資料庫地址
Hibernate.connection.driver_class 表示要連結的資料庫的驅動類
Hibernate.connection.username 要連線的資料庫的使用者名稱
Hibernate.connection.password 要連線的資料庫的密碼
Hibernate.dialect 表示要使用的資料庫的型別
org.hibernate.dialect.MySQL5Dialect mysql資料庫
org.hibernate.dialect.Oracle9Dialect oracle資料庫
org.hibernate.dialect.SQLServerDialect SQLServer資料庫
hibernate.hbm2ddl.auto
validate:載入hibernate時驗證建立表結構
update:載入hibernate時自動更新資料庫結構,如果表存在不用建立,如果不存在就建立。
create:每一次載入hibernate時都建立表結構
create-drop:載入hibernate時建立,退出時刪除
基本概念和CURD
開發流程
1、由Domain object -> mapping->db。(官方推薦)
2、由DB開始,用工具生成mapping和Domain object。(使用較多)
3、由對映檔案開始。
Domain Object限制
1、預設的構造方法(必須的)。
2、有無意義的標示符id(主鍵)(可選)
3、非final的,對懶載入有影響(可選)
DomainJava Object(User)
publicclass User {
privateint id;
privateString name;
privateDate birthDay;
//gettersetter…
}
1、xx.hbm.xml
<?xml version="1.0"?>
<hibernate-mapping package=“cn.itcast.domain">
<class name="User"table="user">
<idname="id">
<generatorclass="native"/>
</id>
<propertyname="name"/>
<propertyname="birthday”/>
</class>
</hibernate-mapping>
物件關係對映檔案:把物件導向中的實體類物件對映到資料庫中的實體(表的記錄),把實體類之間的關聯關係也對映到資料庫中多個表之間的相互關係中。這樣,在Hibernate中對這些實體物件的操作就直接轉換為對資料庫表的記錄的操作。
1.Configuration類
是Hibernate的入口,它負責配置並啟動Hibernate。Hibernate通過Configuration的例項載入配置檔案資訊,然後讀取指定物件關係對映檔案的內容並建立SessionFactory例項。
2.SessionFactory介面
負責初始化Hibernate。一個SessionFactory例項對應一個資料庫。應用程式從SessionFactory中獲得Session例項。
3.Session介面
Session被稱為持久化管理器,負責管理與持久化相關的操作:儲存、更新、刪除和載入物件。
4.Transaction介面
是Hibernate框架的事務介面。它對底層的事務介面做了封裝。包括:JDBC API和JTA。
Session的快取(一級快取)
Session的CRUD方法以及呼叫查詢介面的list(),iterate()方法時,如果session快取中不存在相應的物件,Hibernate就會把該物件加入到第一級快取中,如果session快取中已經存在這個物件,就不需在去資料庫載入,而直接使用快取中的物件。
flush:進行清理快取(此時快取中的資料並不丟失)的操作,讓快取和資料庫同步執行一些列sql語句,但不提交事務,;
commit:先呼叫flush() 方法,然後提交事務. 則意味著提交事務意味著對資料庫操作永久儲存下來。
session的快取一般交由hibernate框架自動管理。
相關文章
- Java_喬曉鬆_Servlet--ServletContext的總結以及應用例項JavaServletContext
- websocket原理和應用入門Web
- Java反射詳解:入門+使用+原理+應用場景Java反射
- 入門與應用(三)
- Java框架學習之Hibernate入門Java框架
- Java開源專案Hibernate快速入門Java
- 如何使用 IDEA 建立 Java 入門應用IdeaJava
- 輕鬆入門,30min 搭建一個「淘立拍」應用
- hibernate快速入門示例
- hibernate入門乾貨
- Hibernate快速入門--轉
- Hibernate 延遲載入原理
- Excel輕鬆入門Excel
- influxdb 原理與應用UX
- SSH 的原理與應用
- 棧的原理與應用
- Idea開發Java WEB 應用入門教程薦IdeaJavaWeb
- 快應用,快入門
- Hibernate的入門知識
- Hibernate快速入門筆記筆記
- 單元測試的入門實踐與應用
- Hibernate基於Maven入門例項,與MyBatis比對MavenMyBatis
- dubbo的SPI應用與原理
- SqlServer索引的原理與應用SQLServer索引
- PDM與MRPⅡ應用原理
- 快應用快速入門教程
- 快應用開發入門
- 快應用入門筆記筆記
- Java技術主要有哪些應用方向?這裡揭曉!Java
- 3.Hibernate入門筆記筆記
- 零基礎輕鬆入門——JAVA基礎學習Java
- 高曉鬆:區塊鏈也可以有詩與遠方區塊鏈
- 01-Spark的Local模式與應用開發入門Spark模式
- 【Hibernate】—Hibernate+mysql 環境搭建+入門例項MySql
- Java 讀寫鎖 ReadWriteLock 原理與應用場景詳解Java
- Java虛擬機器類裝載:原理、實現與應用Java虛擬機
- Apache Kylin 入門 2 - 原理與架構Apache架構
- Flask入門很輕鬆 (一)Flask