今天回顧了一下Hibernate的基礎,本身動手作了一下Hibernate框架Helloworld級別的Demo。特此記錄遇到的一些問題。我用的Hibernate版本是4.3.10的,Mysql驅動版本是5.1.45的。sql
1.在4.3版本中,獲取SessionFactory的方式發生了變化。數據庫
2.在個人數據庫裏沒有建實體對應的表、數據庫方言選擇MySQLInnoDBDialect的條件下,在我執行保存實體操做時,哪怕我hibernate.hbm2ddl.auto的值設置爲update、或者是create(及時更新表數據、每次都從新建立表),都會報錯,提示table(數據庫名.表名) not exist。通過查詢資料,我找到了一種解決方案,就是將方言設置爲MySQL5Dialect,這樣在第一次保存實體時,就會自動建表了。當數據庫有了表之後,再將方言切換爲MySQLInnoDBDialect,後面的保存操做正常。框架
3.上述問題的緣由:若是MySQL的版本在5.5及以上,而且要使用支持事務的數據庫方言,那麼MySQL5InnoDBDialect才能自動建表。MySQLInnoDBDialect不能自動建表。測試
4.通過更多的測試,在MySQL版本爲5.6.35的狀況下,使用MySQLDialect、MySQL5Dialect和MySQL5InnoDBDialect方言,hibernate.hbm2ddl.auto設置爲update,均可以自動生成表。可是MySQLInnoDBDialect不支持自動生成表,若是數據庫沒有表,會報錯,如2所說。spa