Session只有在清理緩存的時候的才執行delete語句。此外,只有當調用Session的close()方法時,才會從Session的緩存中刪除該對象。
例如以下代碼先加載一個持久化對象,然后通過delete()方法將它刪除:
Session session1 = sessionFactory.openSession();
Transaction tx1 = session1.beginTransaction();
// 先加載一個持久化對象
Customer customer = (Customer)session.get(Customer.class, new Long(1));
session.delete(customer); // 執行一個delete語句
txt1.commit(); // 清理緩存,執行delete語句
session.close();// 從緩存中刪除Customer對象
小結:刪除數據前,開啟事務,可以解決這個問題。