環境搭建成功後就進入了Hibernate的dao層的修改,將以前的使用MySQL的dao層修改爲使用hibernate的dao層。一開始我是和以前使用了UserDao類、UserDaoImpl類、UserDaoProxy類一塊兒構建了dao層,等我修改完後,發現了一個問題:就是在UserDaoproxy類裏寫有關於用HibernateUtil類鏈接數據庫的語句,就在public UserDAOProxy()throws Exception{}方法裏寫 ,用session取得HibernateUtil類的 public static SessionFactory getSessionFactory(){ return sessionFactory; }方法,和用dao1取得 public static Session getSession() return sessionFactory.openSession();}方法,試了好久仍是寫不出來,這個實現不了,其餘的都是免談。最後我決定在dao層裏只是用UserDao類、UserDaoImpl類,在UserDaoImpl類裏就用了和數據庫鏈接的語句。
糊糊塗塗地寫完 dao層後,當我登錄成功後,以爲很不思議。測試過用戶登錄、用戶註冊、修改密碼都沒問題,可是一直困擾我幾天的是用戶刪除,一直不成功。我以爲代碼都沒有問題,卻老是顯示UserDaoImpl類的public boolean deleteUser(User user) throws Exception {}方法裏的session.delete(user);有錯,我不以爲有錯。就不斷調試,直到今天上午本來是要寫形勢與政策做業,一無聊就又在調試,就直接把那句錯誤提醒:not-null property references a null or transient value: model.User,直接copy在百度裏,找到一個有用的回答,說是把User.hbm.的 not-null="true"去掉或true改成false,
因而我就刪除了name的not-null="true",發現仍是不行,就恢復了name的not-null="true",又單獨刪除了password的not-null="true",發現,也是不行,結果查看錯誤提醒,我以爲是兩個一塊兒刪除。以下所示:
結果用戶刪除真的運行成功,真的很意外,不是很明白這是爲何。 我都快打算放棄了。
小插曲:
直到今天,我才知道「 UserDaoproxy類裏寫有關於用HibernateUtil類鏈接數據庫的語句」怎麼寫,看到一同窗寫的,才曉得。這纔是重點,代碼以下:
web