今天回顾了一下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