代码之家  ›  专栏  ›  技术社区  ›  Brandon Yarbrough

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

  •  17
  • Brandon Yarbrough  · 技术社区  · 15 年前

    有没有什么好的方法来设置Java/Spring/Hibernate等价于Rail的测试装置?我试图找到一种方法来告诉Hibernate“无论何时创建这个表,都要立即插入这些行”。我找不到可以添加的回调或钩子,但也许还有其他方法。

    3 回复  |  直到 15 年前
        1
  •  29
  •   Pascal Thivent    15 年前

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

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

    此功能已在 Rotterdam JBug and Hibernate's import.sql

    import.sql: easily import data in your unit tests

    这是严重缺乏文件和 在 SessionFactory 创造 以新格式导入数据的生成 数据库。你只需要添加一个文件 命名 在你的类路径中 根和集 create create-drop 作为你的 hibernate.hbm2ddl.auto 财产。

    现在我已经开始行动了 查询章节。它初始化了我的 包含一组新数据的数据库 我的单元测试。JBossSeam也使用它 在各种各样的例子中有很多。 但在当时是非常有用的。记得 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's blog 写了一篇不错的文章。 数据库对象(索引、表和 依此类推),您也可以使用辅助 数据库对象功能。

        2
  •  6
  •   mmalmeida    14 年前

    在hibernate 3.6中,允许运行任意sql命令的配置为:

    hibernate.hbm2ddl.import\u文件

    http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/ ,注意到文档中有一个错误:属性是import\u files,结尾是s。

        3
  •  1
  •   brabster    15 年前

    如果你说的是JUnit测试和使用 AbstractTransactionalDataSourceSpringContextTests 有一些方法可以覆盖,比如 onSetupBeforeTransaction