Hibernate 使用 InnoDB 而不是 MyISAM

Posted

技术标签:

【中文标题】Hibernate 使用 InnoDB 而不是 MyISAM【英文标题】:Hibernate to use InnoDB instead of MyISAM 【发布时间】:2012-09-28 08:59:38 【问题描述】:

在创建表时如何让休​​眠以使用 InnoDB 而不是 MyISAM? Hibernate: Create mysql InnoDB tables instead of MyISAM 的建议对我不起作用。

我正在使用 Glassfish 3.1.2 和 MySql 5。我还在 Mac OSX Lion 上通过 XAMPP 安装了 MySQL。

【问题讨论】:

顺便说一句,我已将persistence.xmlhibernate.cfg.xml 都更改为使用org.hibernate.dialect.MySQL5InnoDBDialect。当失败时,我尝试了org.hibernate.dialect.MySQLInnoDBDialect。什么都没有。 将 InnoDB 设置为默认引擎怎么样? (无论如何强烈推荐) @a_horse_with_no_name,我一直在调查。目前尚不清楚如何做到这一点。我打开了 xampp my.cnf 文件,但没有行说 default-table-type 注释掉。 如果不存在,则添加它。 这个可能重复 -***.com/questions/1459265/… 【参考方案1】:

经过大量研究,我了解到将数据库默认设置为 InnoDB 并不是一个好习惯。给出了很多原因,例如 InnoDB 价格昂贵。鉴于所有原因,我得出的结论是,如果将 InnoDB 设为默认是最佳实践,那么很可能数据库将被配置为这样。所以我一直在寻找不同的解决方案。

无论如何,解决方案是这样的: 转到 glassfish 并将以下属性添加到相关的 JDBC 连接池中。

Name: SessionVariables
Value: storage_engine=InnoDB.

这对我来说就像一个魅力。 如果有人有更好的解决方案,我真的很想听听。

【讨论】:

以上是关于Hibernate 使用 InnoDB 而不是 MyISAM的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 hibernate.properties 文件而不是 hibernate.cfg.xml

MySQL存储索引InnoDB数据结构为什么使用B+树,而不是其他树呢?

初触hibernate01--MYSQL建表时type=InnoDB和Engine=InnoDB注意点

如何使用唯一键而不是主键在 Hibernate 中检索记录

为啥在这个 Hibernate 映射中使用 @ManyToOne 而不是 @OneToOne?

MySQL InnoDB auto_increment 值增加 2 而不是 1。病毒?