spring.jpa hibernate自动建表引擎设置

在Spring jpa 中hibernate 会自动根据实体类建表,但建立的表引擎默认的是MyISAM。那怎么更改默认的表引擎为InnoDB呢?首先看一下你的MySQL方言是怎么设置的。如果你的方言设置的是MySQL55Dialect,那么无需更改, 默认的就是InnoDB。如果你的方言是MySQL5Dialect, 那我们看下代码。

	public MySQLDialect() {super();String storageEngine = Environment.getProperties().getProperty( 		Environment.STORAGE_ENGINE );if ( storageEngine == null ) {this.storageEngine = getDefaultMySQLStorageEngine();}else if( "innodb".equals( storageEngine.toLowerCase() ) ) {this.storageEngine = InnoDBStorageEngine.INSTANCE;}else if( "myisam".equals( storageEngine.toLowerCase() ) ) {this.storageEngine = MyISAMStorageEngine.INSTANCE;}else {throw new UnsupportedOperationException( "The storage engine '" + storageEngine + "' is not supported!" );}...........

从这段代码可以看出, 在创建存储引擎的实例时首先获取环境变量Environment.STORAGE_ENGINE(“hibernate.dialect.storage_engine”), 如果定义了引擎类型,就按照定义的类型生成相应类型的实例。 注意MySQL5Dialect是MySQLDialect的子类。 明白了这段代码, 我们在系统启动时通过-Dhibernate.dialect.storage_engine=innodb定义一下Environment.STORAGE_ENGINE的值就好了。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部