springmvc hibernate 关闭自动创建或更新数据库
最近团队又启动了好早前发布的一个古老项目,框架组成:springmvc hibernate jsp。看了下之前自己写的代码,百般嫌弃,琢磨了半天需求,唯一感想 - 重构,=_=|| 果然由俭入奢易,由奢(springboot前后端分离)入俭(springmvc jsp)难啊~~
问题描述
因需求变化,DB中某个表的某个字段需要加大size,于是愉快的修改了表结构也整理好了更新sql,结果部署到开发环境后,前端大佬提醒API报错了!
问题回溯
Hibernate有自动创建和更新表的操作,于是看了下表对应的实体类,上面有写声明varchar(64)
,这就是表结构被变更的原因!
import javax.persistence.Column;
@Column(name = "user_name", columnDefinition = "varchar(64) COMMENT '用户姓名'")
解决方案
hibernate.hbm2ddl.auto设置为none
关闭Hibernate自动更新,将属性值hibernate.hbm2ddl.auto设置为none
相关知识点
Hibernate xml方式相关配置
springmvc中hibernate配置可使用map或者properties两种方式,区别不大:
- <property name=“jpaPropertyMap”>
- <property name=“jpaProperties”>
以下是jpaProperties方式:
<!-- Jpa Entity Manager 配置 关联hibernateJpaVendorAdapter -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<!-- 数据源bean -->
<property name="dataSource" ref="dataSource"/>
<!-- 指定JPA属性;如Hibernate中指定是否显示SQL的是否显示、方言等 -->
<property name="jpaProperties">
<props>
<!-- <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> -->
<prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
<!-- <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop> -->
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<!-- <prop key="hibernate.hbm2ddl.auto">validate</prop> -->
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>
hbm2ddl.auto 属性
属性值 | 说明 |
---|---|
validate | 加载hibernate时,验证创建数据库表结构 |
create | 每次加载hibernate,重新创建数据库表结构 |
create-drop | 加载hibernate时创建,退出是删除表结构 |
update | 加载hibernate自动更新数据库结构 |
none | 不做任何操作 |
总结
对于hbm2ddl.auto
一般情况下,项目是需要数据库脚本版本管理,所以建议使用none!
若项目不需要脚本管理,可以使用 validate / update。
create / create-drop 操作杀伤性太大,最好不要使用,不然删库跑路那是家常便饭。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgcaggi
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01