当前位置: 首页 > 面试题库 >

Spring/Hibernate测试:创建DDL后插入测试数据

柯伟志
2023-03-14
问题内容

我有一个Spring / Hibernate网络应用程序,该应用程序具有一些在内存中的HSQL数据库上运行的集成测试。由于hbm2ddl =
create,Hibernate使用了这个空白数据库并创建了我的所有测试表和约束。但是,我有一个新的bean,在它的afterPropertiesSet()方法期间检查数据库中的特定配置值,因此,当初始化此bean时,数据库中必须存在这样的行。

有什么好的方法来设置与Rail的测试装置等效的Java / Spring /
Hibernate?我试图找到一种方法来告诉Hibernate“无论何时创建此表,都应在之后立即插入这些行”。我找不到可以添加的回调或挂钩,但是也许还有另一种方法。


问题答案:

我试图找到一种方法来告诉Hibernate“无论何时创建此表,都应在之后立即插入这些行”

从Hibernate
3.1开始,您可以import.sql在Hibernate的运行时类路径中包含一个名为的文件,并且在模式导出时,Hibernate将在导出模式后执行该文件中包含的SQL语句。

鹿特丹JBug和Hibernate的import.sql博客文章中已经宣布了此功能:

import.sql:在单元测试中轻松导入数据

Hibernate具有一个简洁的小功能,该功能严重不足文档,并且未知。您可以在SessionFactory创建数据库模式后立即在创建过程中执行SQL脚本,以将数据导入到新数据库中。您只需要import.sql在您的类路径根目录中添加一个名为的文件,然后将create
设置create-drop为您的 hibernate.hbm2ddl.auto属性。

现在,我已经开始查询一章,将其用于“运行中的Hibernate Search”。它使用一组用于单元测试的新数据初始化数据库。JBoss
Seam在各种示例中也经常使用它。 import.sql是一个非常简单的功能,但有时非常有用。请记住,SQL可能取决于您的数据库(可移植性!)。

#import.sql file
delete from PRODUCTS
insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL,

DESCRIPTION) values (‘1’, ‘630522577X’, ‘My Fair Lady’, 19.98,
‘630522577X.jpg’, ‘My Fair blah blah…’);
insert into PRODUCTS (PROD_ID, ASIN, TITLE, PRICE, IMAGE_URL,
DESCRIPTION) values (‘2’, ‘B00003CXCD’, ‘Roman Holiday ‘, 12.98,
‘B00003CXCD.jpg’, ‘We could argue that blah blah’);

有关此功能的更多信息,请查看Eyal的博客,他撰写了一篇不错的文章。请记住,如果要添加其他数据库对象(索引,表等),还可以使用辅助数据库对象功能。

它仍然没有真正的记录。



 类似资料:
  • 问题内容: 我有一个Spring / Hibernate网络应用程序,该应用程序具有一些在内存中的HSQL数据库上运行的集成测试。由于hbm2ddl = create,Hibernate使用了这个空白数据库并创建了我的所有测试表和约束。但是,我有一个新的bean,在它的afterPropertiesSet()方法期间检查数据库中的特定配置值,因此,当初始化此bean时,该行需要存在于数据库中。 有

  • 我正在创建minecraft插口插件,如何测试玩家是否为op? 例如在 我可以用。我没有得到许可。有这样的东西可以用来检查op吗?op有所有权限吗?

  • 如何让Spring Boot在测试类之间从头开始重新创建内存中的测试数据库? 我有几个用和注释的本地集成测试,可以改变数据库状态。我已经用标记了每一个。我期望创建内存数据库的代码将是应用上下文生命周期的一部分,因此在任何后续测试中都应该创建一个新的生命周期。 我可以在日志中看到Flyway正在尝试重新应用迁移,并认为它们已经完成,因为数据库尚未清除。 Spring Boot是否在每个应用上下文之外

  • 假设我有一个测试来断言系统中新用户的注册是否真的成功: 现在,这将在实际数据库中创建一个新的测试用户,因为我希望这个测试在实际环境中运行。这意味着测试不能一直运行,对吗?我应该如何进行此类测试?那些使用系统的实际环境并操纵真实数据的人?

  • 我有数百个用Spock编写的测试规范。所有这些都是功能测试,可以独立运行。但我遇到了一种情况,在运行其他测试之前,我需要运行一个特定的测试。 使用Junit测试套件很容易实现这一点,而且在Eclipse中非常简单。但由于我所有的测试都是groovy测试,所以在Spring IDE中为spock测试(用groovy编写)创建测试套件并不容易。 有人能分享一些关于我们如何创建测试套件、运行一些特定测试

  • 本文向大家介绍c# 插入数据效率测试(mongodb),包括了c# 插入数据效率测试(mongodb)的使用技巧和注意事项,需要的朋友参考一下 mongodb的数据插入速度是其一个亮点,同样的10000条数据,插入的速度要比Mysql和sqlserver都要快,当然这也是要看使用者怎么个使用法,你代码如果10000次写入使用10000次连接,那也是比不过其他数据库使用事务一次性提交的速度的。 同样