Hibernate 框架(二)(下載及環境搭建)
一、Hibernate下載
1、通過下面網站進行下載:https://zh.osdn.net/,進入網站如下圖所示。
2、單擊頁面頂部的導航欄中的“下載”,即可進入
3、在搜索框中輸入hibernate,如下圖所示。
4、單擊“搜索”按鈕,進入搜索結果界面,如下圖所示。
5、單擊上圖中的超文本"Hibernate",進入與hibernate有關的頁面,如下圖所示。
6、單擊“下載”選項卡,進入下載hibernat相關的頁面,并把頁面往下移直到看到如下圖所示的頁面。
7、單擊“hibernae-orm”對象關系映射,即可看到各種版本的hibernet,如下圖所示。
8、我們下載5.4.0Final這個版本,所以我們單擊“5.4.0Final”超文本即可出現如下圖所示。
9、我們單擊“hibernate-release-5.4.0.Final.zip”這是在window下使用,而另外一個是在linux下使用。單擊擊即進入下載文件,如下圖所示。
10、到此我們下載hibernate就結束了。并解壓它,如下圖所示。
二、Hibernate的環境搭建與簡單示例
1、創建一個web項目,如下圖所示 。
2、在上面的對話框中輸入項目名:hibernatepro,然后單擊“Finish",
2、單擊”next“,進入如下界面,如下圖所示。
3、在上面對話框中選擇”Generate web.xml deployment descriptor“,然后單擊”Finish“完成項目的創建,如下圖所示 。
4、我們進入Hibernate解壓目錄”G:\java2esoft\hibernate-release-5.4.0.Final\lib\required“如下圖所示。
5、選擇所有的文件,并把它們復制到項目中的”WebContent\WEB-INF\lib",如下圖所示。
6、把連接mysql數據庫的“mysql-connector-java-5.1.12-bin.jar”也復制到項目的“WebContent\WEB-INF\lib",如下圖所示。
7、選擇“WebContent\WEB-INF\lib"目錄中所有的jar包,然后右單鼠標,彈出如下的菜單。
8、單擊”Add to Build Path“命令完成把這些jar添加到類庫中。
9、在項目中的src右單鼠標,在彈出的快捷菜單如下圖所示。
10、選擇”new->Package“命令,并輸入”qin.com",如下圖所示。
單擊“finish”完成數據包的創建,如下圖所示。
11、在mysql中創建一個數據庫stsc,并在stsc數據庫中創建一個login數據表,表結構如下。
并在數據表login中輸入一些記錄。如下圖所示。
12、回到eclipse中并在數據包qin.com中創建數據表login的實體類,如下圖所示。
Login.java實體類的代碼如下:
package qin.com;
public class Login {
private int id;
private String name;
private String pass;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
13、寫orm元數據(對象與表的映射配置文件 - XML格式),其格式為—— 類名.hbm.xml ,如Login.hbm.xml
Login.hbm.xml完整代碼如下
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2018-4-25 9:28:38 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="qin.com.Login" table="login">
<!-- name指的是持久類,table是我們數據表users -->
<id name="id" type="java.lang.Integer"><!-- name是持久類的屬性id -->
<column name="id" /> <!-- name是users數據表的id字段 -->
<generator class="assigned" /><!-- 表示字段是主關鍵字且是自動增量 -->
</id>
<property name="name" type="java.lang.String"><!-- name是持久類的屬性name -->
<column name="name" /><!-- name是users數據表的name字段 -->
</property>
<property name="pass" type="java.lang.String"><!-- name是持久類的屬性pass -->
<column name="pass" /><!-- name是users數據表的pass字段 -->
</property>
</class>
</hibernate-mapping>
14、在src目錄中寫主配置文件,它是hibernate框架核心配置文件。[核心配置文件],其格式為——hibernate.cfg.xml,如下圖所示。
hibernate.cfg.xm完整代碼如下。
<?xml version="1.0" encoding="UTF-8"?>
<!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">org.gjt.mm.mysql.Driver</property>
<!-- 數據庫url -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/stsc</property>
<!-- 數據庫連接用戶名 -->
<property name="hibernate.connection.username">root</property>
<!-- 數據庫連接用戶名密碼 -->
<property name="hibernate.connection.password">admin</property>
<!-- 數據庫方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 引入ORM元數據配置,即加載映射文件路徑填寫:src目錄下路徑-->
<mapping resource="qin/com/Login.hbm.xml" /><!-- 這里不能寫為”qin.com.Login.hbm.xml“ -->
</session-factory>
</hibernate-configuration>
15、寫代碼測試,在qin.com中創建一個類Test.java,如下圖所示 。
Test.java文件的完整代碼如下。
package qin.com;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class Test {
public static void main(String[] args) {
// 創建配置對象,并獲取配置文件信息
Configuration config = new Configuration().configure();
// 創建會話工廠
SessionFactory sf = config.buildSessionFactory();
// 創建事務
Transaction t = null;
// 創建會話
Session session = null;
try {
session = sf.openSession();//通過會話工廠獲取會話
t = session.beginTransaction();//通過會話創建事務
Login user = new Login();//實例化實體類
user.setName("lili");//為實體類對象的屬性賦值
user.setPass("lili");
// 添加數據
session.save(user);
// 提交事務
t.commit();
System.out.println("添加數據成功");
} catch (Exception e) {
if (t != null) {
// 提交事務不成功要回滾
t.rollback();
}
e.printStackTrace();
} finally {
if (session != null) {
session.close();// 關閉會話
}
}
}
}
若一切正常運行程序結果為“添加數據成功”。若看到這一結果說明我們對Hibernate的搭建與配置是正確的。
智能推薦
Hibernate框架
持久化類 java類與數據庫的表建立了映射關系,該類被稱為持久化類 1)、編寫規則 ①無參構造,使得Hibernate可通過反射建立對象 ②私有屬性,get/set方法 ③持久化類提供一個唯一標識OID與數據庫主鍵對應 ④持久化類屬性盡量使用包裝類(基本數據類型,默認值為0,有些歧義) ⑤持久化類不要使用final修飾(延遲加載需要繼承產生代理類,而final修飾的類不能繼承,即延遲加載失效) 2...
Hibernate框架
Hibernate是一個開放源代碼的對象關系映射框架(ORM),它對JDBC進行了非常輕量級的對象封裝,簡化了java應用程序與數據庫交互的開發。簡化了數據創建,數據處理和數據訪問。 ①面向對象操作:將對數據庫的操作轉換為對Java對象的操作。 ②數據庫獨立查詢:通過配置對應的數據庫“方言”,就可以根據不同類型的數據庫生成適合的SQL語句。 ③非侵入式:Hibernate不...
Hibernate框架
Hibernate框架 1、簡介 Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數據庫表建立映射關系,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在S...
Hibernate(二)
為什么80%的碼農都做不了架構師?>>> 1. 對象的狀態 代碼 2. 一對多的單項關聯 2.1. 數據庫表和實體類關系 2.2. Classes映射文件中cascade、inverse、外鍵的配置 2.3. 代碼體現 2.4. 常見錯誤分析 3. hibernate基礎知識總結 轉載于:https://my.oschina.net/ilaoda/blo...
猜你喜歡
Hibernate(二)
1. Hibernate的持久化類和對象標識符 1.1 持久化類的編寫規范 1.1.1 什么是持久化類 Hibernate是持久層的ORM映射框架,專注于數據的持久化工作。 持久化就是將內存中的數據永久存儲到關系型數據庫中。 持久化類指的是一個Java類與數據庫表建立了映射關系,那么這個類稱為是持久化類。其實你可以簡單的理解為持久化類就是一個Java類有了一個映射文件與數據庫的表建立了關系。 1....
hibernate二
一:主鍵生成策略 1、sequence 特點:只能在支持序列的數據庫中使用,如Oracle。 Hibernate生成主鍵時,查找sequence并賦給主鍵值,主鍵值由數據庫生成,Hibernate不負責維護,使用時必須先創建一個sequence,如果不指定sequence名稱,則使用Hibernate默認的sequence,名稱為hibernate_sequence,前提要在數據庫中創建該sequ...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...