Hibernate基礎-HelloWord
1. ORM :ORM (Object /Relation
Mapping ): 物件/關係對映(理解)
1) ORM 主要解決物件 -關係的對映
2) .ORM的思想:將關聯式資料庫中表中的記錄對映成為物件,以物件的形式展現,程式設計師可以把對資料庫的操作轉化為對物件的操作。
2. Hibernate 的 HelloWord
1) . 加入 jar 包:加入到當前專案的 classpath 下
hibernate-release-4.2.4.F inal\lib\required\*.jar(所有的包)
MySQL 的驅動mysql -connector -java -5.1.29 -bin.jar
2) . 配置 hibernate 的配置檔案: hibernate.cfg.xml
①. 利用 hibernate 外掛生成 hibernate.cfg.xml
<?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 >
</session -factory >
</hibernate-configuration>
②. 編輯 hibernate.cfg.xml 檔案
I. 加入連結資料庫的基本資訊:
<! -- 配置連線資料庫的基本資訊 -->
<property
name ="connection.driver_class" >com.mysql.jdbc.Driver </property >
<property
name ="connection.username" >root </property >
<property
name ="connection.password" >123456 </property >
<property
name ="connection.url" >jdbc :mysql:///hibernate4</property>
II. 配置 Hibernate 使用的資料庫方言:
每一種資料庫使用的基本語法會有細微的區別,例如分頁 MySQL 使用 limit,而 Oracle 使用 rownum。這就需要告訴 Hibernate 底層使用的是哪一種資料庫
<! -- 配置 Hibernate 的資料庫方言 -->
<property
name ="dialect" >org.hibernate.dialect.MySQLInnoDBDialect </property >
注意:方言對應的類來自於 hibernate-release- 4.2.4.Final\project\etc\hibernate.properties 中
III. 編輯 Hibernate 的一般屬性
<! -- 建立資料表的策略(瞭解,最多使用的值是 update) -->
<property
name ="hbm2ddl.auto" >update </property >
> create : 每次執行都會刪除上一次的表 ,重新生成表 , 哪怕二次沒有任何改變
> create -drop :會根據 .hbm.xml 檔案生成表, 但是SessionFactory 一關閉, 表就自動刪除
> update :最常用的屬性值,也會根據 .hbm.xml 檔案生成表 , 但若 .hbm.xml 檔案和資料庫中對應的資料表的表結構不同 ,
Hiberante 將更新資料表結構,但不會刪除已有的行和列
> validate : 會和資料庫中的表進行比較 , 若 .hbm.xml 檔案中的列在資料表中不存在,則丟擲異常
<! -- 是否列印 SQL
-->
<property
name ="show_sql" >true</property>
<! -- 是否格式化 SQL
-->
<property
name ="format_sql" >true</property>
3) . 編寫實體類( POJO)及 Hibernate 對映檔案: xxx.hbm.xml
I. 編寫一個 POJO :必須包含一個 OID 欄位和資料表主鍵對應;必須有一個無引數的構造器;為欄位定義 getter、 setter;非 final 類
II. 由 hibernate 外掛生成 xxx.hbm.xml 檔案
注意:需要對檔案進行簡單的修改:修改主鍵生成方式(使用 id 的 generator 子節點的 class 屬性配置主鍵的生成方式, native 表示使用資料庫本地的方式來
生成主鍵, MySQL 會自動的選用 auto_increment,而 Oracle 則使用序列的方式)
<generator
class ="assigned" /> 修改為 <generator
class="native" />
III. 在 hibernate 配置檔案(hiberante.cfg.xml )中關聯 hibernate 持久化類的對映檔案
<mapping
resource ="com/atguigu/hibernate/entities/News.hbm.xml" />
4) . 通過 Hibernate
API 完成持久化操作
1. 建立 SessionFactory : Session 的工廠類。SessionFactory 是執行緒安全的,一般地,在一個 Java 應用中只有一個 SessionFactory 例項
Configuration configuration = new
Configuration ().configure ();
ServiceRegistry serviceRegistry = new
ServiceRegistryBuilder().applySettings( configuration.getProperties())
.buildServiceRegistry ();
SessionFactory sessionFactory = configuration.buildSessionFactory (serviceRegistry );
2. 建立 Session : 表示 Hibernate 應用程式和資料庫的一次會話
Session session = sessionFactory.openSession ();
3. 開啟事務
Transaction transaction = session.beginTransaction ();
4. 執行持久化操作
//save
//session.save (news );
//利用 OID 載入物件
News news2 = (News ) session.get (News.class , 1);
System.out.println (news2 );
news2.setContent ("myBatis" );
5. 提交事務
transaction.commit ();
6. 關閉 Session
session.close ();
7. 關閉 SessionFactory
sessionFactory.close ();
★寫測試類的時候一般採用註解更方便些:
public class Testing {
private SessionFactory sessionFactory ;
private Session session ;
private Transaction transaction = null ;
@Before
public void init (){
Configuration configuration = new
Configuration ().configure ();
ServiceRegistry serviceRegistry = new
ServiceRegistryBuilder().applySettings( configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory (serviceRegistry );
session = sessionFactory.openSession ();
transaction = session.beginTransaction ();
}
@After
public void destroy (){
transaction.commit ();
session.close ();
sessionFactory.close ();
}
@Test
public void test (){
//測試部分
}
}
相關文章
- Hibernate的基礎
- hibernate基礎配置
- Java Web系列:Hibernate 基礎JavaWeb
- Hibernate--HQL基礎語法
- 初觸hibernate--基礎知識盲區
- gRPC 之 GoLang 入門 HelloWord(三)RPCGolang
- 【linux】helloword原理分析及實戰Linux
- 小白的第一個HelloWord智慧合約
- 【FPGA基礎】Latch基礎FPGA
- AndroidJNI入門第一篇——HelloWordAndroid
- Opengl ES 3.0 on iOS--- HelloWord(繪製彩色矩形)iOS
- Java基礎-語法基礎Java
- Pandas 基礎 (2) - Dataframe 基礎
- 前端基礎之jQuery基礎前端jQuery
- [今日白學]元件的基礎的基礎的基礎元件
- Springboot快速上手- 第二篇 helloWord走起Spring Boot
- 【web前端基礎 | JS基礎】物件Web前端JS物件
- scala基礎語法-----Spark基礎Spark
- Java基礎-物件導向基礎Java物件
- 【基礎篇索引】索引基礎(四)索引
- 【基礎篇索引】索引基礎(三)索引
- 【基礎篇索引】索引基礎(二)索引
- 【基礎篇索引】索引基礎(一)索引
- python基礎中的基礎Python
- 基礎
- JavaScript 基礎卷(一):基礎語法JavaScript
- 前端基礎入門四(JavaScript基礎)前端JavaScript
- 測試基礎(四)Jmeter基礎使用JMeter
- Python基礎:語法基礎(3)Python
- ASM常用基礎管理命令[ASM基礎]ASM
- 【Java基礎】--深入剖析基礎語法Java
- 【Vim】基礎之基礎——指尖的舞蹈
- 基礎表-底表-基礎資料
- VSCode外掛開發全攻略(二)HelloWordVSCode
- Hibernate 泛型實現 dao 層的基類泛型
- Go 基礎教程--2-基礎知識Go
- Web測試基礎-Html基礎知識WebHTML
- Linux基礎學習——檔案基礎Linux