Hibernate框架簡介
what
Hibernate是一個開源的,實現對象關系映射ORM思想的,輕量級的持久化框架
ORM:(Object Relational Mapping的縮寫)對象關系映射,即將實體的變化翻譯成sql腳本,并執行到數據庫中去, 即實體的變化映射到表的變化。這樣我們在操作具體的實體對象時,就不需要再去和復雜的SQL語句打交道,只需操作實體對象的屬性和方法就行了。
輕量級框架:它沒有侵入性,即不依賴任何容器(Servlet的啟動必須依賴Tomacat容器),這樣就啟動時間較短,易于通用。是相對重量級框架而言的,重量級框架的概念就恰恰和它相反了
持久化框架:持久化是將程序數據在持久狀態和瞬時狀態間轉換的機制。通俗講就是:如果關閉你的應用或系統然后重啟先前的數據依然存在。(就拿實體和數據庫表的變化,當你添加一個實體對象時,但還沒添加到數據庫,這時如果你關閉程序,這個實體對象數據就會丟失;但是當你保存到數據庫后,再關閉程序,數據也不會丟失,因為它永久性的保存在了數據庫里,即瞬時數據持久化為持久數據;應用了POJO持久化對象,應用層抽象出業務的POJO對象并通過Hibernate及映射文件的定義來實現其業務對象的持久化管理),持久化框架就是實現數據持久化的一種框架。實現持久化的方式有很多,比如寫文件,寫數據庫
where
一般應用在企業中,以為在企業中數據(各種訂單數據,庫存數據,客戶數據)比應用程序本身更重要,這時就需要將數據持久化
why
Hibernate對JDBC訪問數據庫的代碼進行了輕量級封裝,很大程度的簡化了DAO層復雜sql語句的編寫
優點:
- 提高生產力 (啟動不依賴任何容器)
- 使開發更加對象化【阻抗不匹配】 (操作面向實體對象,不再去直接操作數據庫;對象—關系阻抗不匹配是指對象模型當中特有的“繼承”,“組合”,“聚合”,“依賴”的概念在關系模型當中是不存在的,但是這種模型的“阻抗不匹配”最終在存儲模型是還是能夠統一起來的;實體對象中字段的數據類型可自動轉換為數據庫中的數據類型)
- 可移植性 (很容易更改數據庫,只需改一下配置文件)
- 沒有侵入行,支持透明持久化 (透明指具體怎么去操作數據庫的我們不知道)
缺點
- 使用數據庫特性的語句,將很難調優
- 對大批量數據更新存在問題
- 系統中存在大量的統計查詢功能
how
創建一個Hibernate簡單項目的步驟,主要步驟如下:
- 創建java項目
- 引入依賴包,可以創建User Library引入
1>lib/*.jar
2>hibernate3.jar
3>加載數據庫驅動(MySql驅動) - 提供hibernate.cfg.xml配置文件,完成基本的配置
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory >
<property name="hibernate.connection.driver_class" >com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url" >jdbc:mysql://localhost:3306/hibernate_many2many</property>
<property name="hibernate.connection.username" >數據庫名稱</property>
<property name="hibernate.connection.password" >數據庫密碼</property>
<property name="hibernate.dialect" >org.hibernate.dialect.MySQLDialect</property>
<!--顯示生成的sql語句-->
<property name="hibernate.show_sql">true</property>
<!--生的sql語句的格式-->
<property name="hibernate.format_sql" >true</property>
<mapping resource="com/bjpowernode/hibernate/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
我們這使用的是MySql數據庫,我們可以去根據etc下的hibernate.properties文件編寫,在其文件中找到有關MySql的配置
4. 建立實體類User.java
5. 提供User.hbm.xml映射文件,完成實體類的映射
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
<class name="com.bjpowernode.hibernate.User" table="t_user">
<!-- 設置主鍵 -->
<id name="id">
<!-- 設置主鍵生成策略 -->
<generator class="uuid"></generator>
</id>
<!-- 普通字段 -->
<property name="name" />
<property name="password" />
</class>
</hibernate-mapping>
常用的主鍵生成策略有:identity,sequence,uuid,native,assigned,foreign
6. 將User.hbm.xml文件加入到hibernate.cfg.xml文件中,此時Hibernate已知道映射的存在了
7.通過Hibernate API編寫訪問數據庫的代碼,即 編寫工具類(如ExportDB.java)將hbm生成ddl。也就是hbm2ddl
package com.bjpowernode.hibernate;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
public class ExportDB {
public static void main(String[] args) {
//默認讀取hibernate.cfg.xml文件
Configuration cfg = new Configuration().configure();
SchemaExport export = new SchemaExport(cfg);
export.create(true, true);
}
}
即根據實體生成數據庫表
8. 建立客戶端類Client,添加用戶數據到MySql
智能推薦
Hibernate框架
Hibernate是一個開放源代碼的對象關系映射框架(ORM),它對JDBC進行了非常輕量級的對象封裝,簡化了java應用程序與數據庫交互的開發。簡化了數據創建,數據處理和數據訪問。 ①面向對象操作:將對數據庫的操作轉換為對Java對象的操作。 ②數據庫獨立查詢:通過配置對應的數據庫“方言”,就可以根據不同類型的數據庫生成適合的SQL語句。 ③非侵入式:Hibernate不...
Hibernate框架
Hibernate框架 1、簡介 Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數據庫表建立映射關系,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在S...
MyBatis簡介和Hibernate簡介
MyBatis簡介 MyBatis的前身是Apache的開源項目iBatis。iBatis一次來源于internet,和abatis的組合,是一個基于Java持久層架構。2010年這個項目由Apache software foundation遷移到Google code,并更名為MyBatis。2013年11月,MyBatis遷移到Github上,目前由Github提供維護。 MyBatis的優勢...
Hibernate配置和簡介
Hibernate構架 Hibernate 什么是hibernate? 在了解hibernate之前我們先來了解一下什么是ORM: ORM是怎么工作的? hibernate概念: hibernate的優點: Hibernate環境配置 在eclipse上配置Hibernate 在IDEA上配置Hibernate Hibernate配置步驟: Hibernate的核心接口 1.Configurati...
Hibernate 框架學習——Hibernate注解
前言 在Hibernate中我們一般都會使用注解,這樣可以幫助我們大大簡化hbm映射文件的配置。下面我就來為大家詳細介紹。 PO類注解配置 首先肯定是搭建好Hibernate的開發環境啦,我在此也不過多贅述,讀者自行實踐。接著在src目錄下創建一個cn.itheima.domain包,并在該包下創建一個Book實體類,由于Book實體類中寫有注解配置,所以就不用編寫那個映射配置文件啦! 下面我就來...
猜你喜歡
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...