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的值就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值