Dan*_*Dan 63 import hibernate initialization data-importer
在部署应用程序时,我经常使用Hibernate的容量来创建数据库模式,以简化部署.通过配置hibernate.hbm2ddl.auto属性可以轻松实现这一点.
但是,有时我还需要将一些初始数据插入数据库,例如root用户.有没有办法通过hibernate使用某种加载文本文件来实现这一点?
我知道我可以很容易地编写代码,但只是想知道是否已经有一些实用程序可以帮助我实现相同的via配置?
Mat*_*ger 83
我通过搜索"Hibernate灯具"找到了这个:
Hibernate将在创建实体管理器工厂时创建数据库(实际上当Hibernate的SessionFactory由实体管理器工厂创建时).如果类路径的根目录中存在名为import.sql的文件('/import.sql'),Hibernate将在创建数据库模式后执行从文件读取的SQL语句.重要的是要记住,在Hibernate创建模式之前,它会清空它(删除所有表,约束或将在构建模式的过程中创建的任何其他数据库对象).
资料来源:http://www.velocityreviews.com/forums/t667849-hibernate-quotfixturesquot-or-database-population.html
尝试一下,让我们知道它是否有效!
小智 61
将import.sql添加到类路径很好,hbm2ddl检查文件是否存在并执行它.唯一的额外细节是每个sql命令必须在它自己的行上,否则它将无法执行.
仅当hbm2ddl.auto设置为create或时,这也将起作用create-drop.
小智 44
在你的hibernate配置中添加hibernate属性hibernate.hbm2ddl.import_files.将hibernate.hbm2ddl.auto属性更改为create.使用初始sql代码在/ classes目录中添加initial_data.sql以插入数据.Hibernate在创建数据库模式后执行此操作.
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
<prop key="hibernate.hbm2ddl.import_files">initial_data.sql</prop>
</props>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
如果您不想在hibernate配置中添加属性,可以在/ classes目录中创建一个文件import.sql,如果属性hibernate.hbm2ddl.auto等于创建,则hibernate默认使用它.
Mar*_*erg 22
hbm2ddl.auto和hbm2ddl.import_files属性是邪恶的(当误用作数据库变更管理工具时)
与其他地方一样,使用hibernate.hbm2ddl.auto和hibernate.hbm2ddl.import_files进行数据库更改管理有一些严重的缺点:
我个人使用liquibase进行数据库更改管理,并开发了以下工作流程以减少维护工作:
即使对于必须实现customChange的复杂更改,也可以在几个小时内完成,包括回滚,测试和文档的定义.对于微不足道的变化,只需几分钟.基本上:你必须做更多的工作(我在不到一天的时间内为4个数据库配置创建了自定义的变更集),但是你可以放心,你已经尽一切可能使数据库保持一致状态.
经过几个小时的绊脚石,我决定分享我发现的东西,虽然这是一个非常古老的帖子.
为了使其正常工作,我必须执行以下操作:
hbmddl设为create或create-dropresources文件夹中,我正在使用maven.希望有所帮助.
| 归档时间: |
|
| 查看次数: |
75728 次 |
| 最近记录: |