hibernate自动建表之engine设置

1.MYSQL的数据库引擎中,只有InnoDB和BDB(Berkley DB )包括了对事务处理和外键的支持。如果数据引擎建为MyISAM则rollback无效。

2.而hibernate自动建表的时候语句如下

Hibernate: 
    
    create table USER (
       id integer not null auto_increment,
        name varchar(255),
        password varchar(255),
        primary key (id)
    ) engine=MyISAM

 即engine为myisam模式.此模式并不支持事务处理和外键约束.

3.解决方案

设置dialect属性 

      注:hibernate5.0之后一定要在MySQL和InnoDBDialect中间加一个 5

<property name="dialect"> org.hibernate.dialect.MySQL5InnoDBDialect</property>

 此时运行后台回显的建表语句为:

Hibernate: 
    
    create table USER (
       id integer not null auto_increment,
        name varchar(255),
        password varchar(255),
        primary key (id)
    ) engine=InnoDB

 即engine为InnoDB模式.此模式支持事务处理和外键约束.

注:  具体innodb和MYISAM的区别请查看:http://blog.csdn.net/xifeijian/article/details/20316775

   数据库方言:http://blog.csdn.net/jialinqiang/article/details/8679171

原文地址:https://www.cnblogs.com/ssjifm/p/7506723.html