Hibernate的Session介面中save/delete/update方法2個引數(entityName)的深入解析
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這個引數暫時可以不用,它是預留的! |