一. Hibernate 初識
hibernate是一種ORM(object relation mapping,對象關係映射)框架,所謂的對象關係映射,通俗的說,就是把JAVA對象保存到關係型數據庫中。
hibernate要做的事,就是讓對象投影到關係數據庫中,然後實施持久化。其具體實現:建立對象到關係數據庫的映射.
Example: 建立User類到數據庫的映射
一個簡單的類User:
public class User{
private int id;
private String name;
}
User類對應的數據庫表USER:
column-name type rule
id number P
name varchar2 R
當進行持久化時,需要把對象的兩個屬性的值保存到數據庫存的USER中,如果使用JDBC的話,我們需要自己寫SQL,並獲取對象兩個屬性的值作爲參數來進行持久話。SQL可能如下:
insert into USER(name) value(?);
當使用hibernate時,首無要作好對象到表的映射關係,使用配置文件來實現:
User.hbm.xml:
...
<class name="user" table="USER"><!--該類對象保存到USER表-->
<id name="id" column="id">
<generator class="native"/><!--這裏有很多策略來生成ID,這裏選擇本地自動生成,-->
</id>
<property name="name" column="name">
</class>
...
然後在通過hibernate.cfg.xml中配置到數據庫的聯接,並讀取User.hbm.xml文件,就建立了映射關係了。
當需要持久化對象時,需要使用到hibernate的session對象:
session.save(new User());
看到了嗎?我們只需要操作對象就行了,也就是說,編程的人不需要看到數據庫了,他只需要直接操作對象就行了。
當我們採用ORM框架之後,應用程序不再直接訪問底層的數據庫,而是以面向對象的方式來操作持久化對象(例如創建、修改、刪除等),而ORM框架則將這些面向對象操作轉換成底層的SQL操作。
hibernate 如何實現持久化?
答:
1.hibernate是一種ORM(object relation mapping,對象關係映射)框架,所謂的對象關係映射,通俗的說,就是把JAVA對象保存到關係型數據庫中,即進行持久化的框架。
2.hibernate進行持久化首先要建立對象到關係數據庫的映射。
3.hibernate根據定義的映射規則將對象持久化(保存到)數據庫存中。這就實現了對象持久化。
二. 序列化和持久化的區別
序列化也是一種對象服務,就是把內存中的對象序列化成流、或者把流反序列化成對象。需要實現2個接口:
首先要說的是,Hibernate中ORM裏對應的映射文件BEAN,必須實現序列化.因爲BEAN裏的數據需要存入數據庫(要轉化爲二進制保存),進行存取工作.
JAVA類的數據 ,如果要進行相關的存儲工作(如寫文件,網絡傳輸,寫數據庫等),那麼這個數據的類 就必須實現序列化接口 (java.io.Serializable).
序列化 : 把對象轉換 爲二進制數據(如網絡傳輸,存儲數據庫等),必須實現序列化接口 (java.io.Serializable).
持久化 : 把對象保存 在介質上(如寫文件,讀文件不是), 沒有接口實現,一般指方法調用.
對象只有在序列化之後才能進行持久化存儲,從持久化存儲介質加載的數據通過反序列化轉變成運行時對象。