1. 程式人生 > >Hibernate的Session介面中save/delete/update方法2個引數(entityName)的深入解析

Hibernate的Session介面中save/delete/update方法2個引數(entityName)的深入解析

Hibernate的Session介面中delete/update方法2個引數(entityName)的深入解析 2010-09-14 18:07

session.update(Object arg0);

session.update(String arg0, Object arg1);

//

session.delete(Object arg0);

session.delete(String arg0, Objectarg1);

//

=========================================================

..

Hibernate的session介面中,delete和update分別有兩個過載方法,不同的是引數多了一個String ;

        一般情況下,更新和刪除只要傳一個Object物件就可以了,那另一個方法中的String是幹什麼用的呢?

1.    String arg0表示的是個EntityName的含義---就是我們說的表名的對映Class名稱;

2.    一般情況下,我們根據Object這個PoJo就可以知道這個物件對應的Class名稱,同時就可以知道該Class在資料庫的表名,所有,沒有必要新增EntityName屬性;

比如:Customer cus=new Customer();

我們根據cus這個Object就知道了它是Customer這個類,就知道它的表名是T_CUSTOMER了,hibernate就可以生成對應的SQL語句啦!

3. 在不使用PoJo類和O/R Mapping的情況下,EntityName是必填的,因為沒有了ORM關係,根據Object無法找到它對應的Class名稱,更不用說資料庫表名稱了。

        這時候有人就問,什麼情況下不使用PoJo和O/R Mapping呢?

        好像現在hibernate真沒有不採用此方法的-------但是,不採用PoJo和O/R Mapping,而採用動態模型(Dynamic models)和 XML對映將是hibernate未來的研究方向,因此,這個引數被提前保留了。

像get load save saveOrUpdate merge persist等等都提供了帶entityName引數的方法啦。

..

//============================

..

總結:EntityName這個引數暫時可以不用,它是預留的!