Tuu*_*nen 17 java spring hibernate jpa web-applications
我想以编程方式使用初始数据设置我的数据库.我想填充我的数据库用于开发运行,而不是用于测试运行(这很容易).该产品构建于Spring和JPA/Hibernate之上.
然后:
我想要的是通过必需的部分设置我的环境,以便调用我的DAO并将新对象插入数据库.我不想在原始SQL,XML,转储数据库或其他任何东西中创建初始数据集.我想以编程方式创建对象并将其持久保存在数据库中,就像在普通应用程序逻辑中一样.
实现此目的的一种方法是正常启动我的应用程序并运行一个执行初始化的特殊servlet.但这真的是要走的路吗?我很乐意将初始数据设置作为Maven任务执行,如果我采用servlet方法,我不知道该怎么做.
有一些类似的问题.我快速浏览了建议的DBUnit和Unitils.但他们似乎非常专注于设置测试环境,这不是我想要的.DBUnit执行初始数据填充,但仅使用xml/csv fixtures,这不是我在此之后所做的.然后,Maven有SQL插件,但我不想处理原始SQL.Maven也有Hibernate插件,但它似乎只对Hibernate配置和表模式创建有帮助(而不是用数据填充db).
这该怎么做?
部分解决方案2010-03-19
建议的替代方案是:
我使用Spring的ApplicationListener实现了这个:
类:
public class ApplicationContextListener implements ApplicationListener {
public void onApplicationEvent(ApplicationEvent event) {
if (event instanceof ContextRefreshedEvent) {
...check if database is already populated, if not, populate it...
}
}
}
Run Code Online (Sandbox Code Playgroud)
applicationContext.xml中:
<bean id="applicationContextListener" class="my.namespaces.ApplicationContextListener" />
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我无法启动ContextStartedEvent,因此我选择了在启动时启动的ContextRefreshedEvent(尚未碰到其他情况).
如何刷新数据库?目前,我只是删除了HSQLDB工件,并在Hibernate启动时生成了新的模式.因为DB也是空的.
您可以使用JPA和普通Java编写单元测试来填充数据库.Maven将此测试称为标准构建生命周期的一部分.因此,您将获得一个完全初始化的数据库,使用Maven,JPA和Java按要求.
| 归档时间: |
|
| 查看次数: |
15061 次 |
| 最近记录: |