面試被問到,也許瞭解但說的不清楚java
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()); 看到了嗎?咱們只須要操做對象就好了,也就是說,編程的人不須要看到數據庫了,他只須要直接操做對象就好了。 hibernate 如何實現持久化? 答: 1.hibernate是一種ORM(object relation mapping,對象關係映射)框架,所謂的對象關係映射,通俗的說,就是把JAVA對象保存到關係型數據庫中,即進行持久化的框架。 2.hibernate進行持久化首先要創建對象到關係數據庫的映射。 3.hibernate根據定義的映射規則將對象持久化(保存到)數據庫存中。這就實現了對象持久化。
持久化顧名思義就是把緩存中的東西放到數據庫中使之持久.對於須要持久化的對象,它的生命週期分爲三個狀態:臨時狀態,持久化狀態,遊離狀態.
臨時狀態:剛剛用new語句建立,沒有被持久化,不處於session的緩存中.處於臨時狀態的java對象被稱爲臨時對象.
持久化狀態:已經被持久化,加入到session的緩存中.處於持久化的java對象被稱爲持久化對象.
遊離狀態:已經被持久化,但不處於session的緩存中,處於遊離狀態的java對象被成爲遊離對象.
持久化對象的特徵:
. 位於一個session事例的緩存中,能夠說持久化對象老是被一個session事例關聯
. 持久化對象和數據庫中的相關記錄對應
. Session在清理緩存時,會根據持久化對象的屬性變化來同步更新數據庫
. Session的save()方法把臨時狀態變爲持久化狀態.
. Session的update() ,saveOrUpdate()和lock()方法使遊離狀態變爲持久化狀態.