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

春季/休眠测试:创建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时,数据库中必须存在这样的行。

  • 问题内容: 我正在使用hibernate处理spring项目,并希望使用ehcache实现二级缓存。我看到了许多解决方法: 引入注释 一个旨在成为继任者的工具集。 可以很好地集成到休眠本身中,以使用例如注释进行缓存。 使用代理。基于注释的配置迅速变得有限或复杂(例如,注释嵌套的多个级别) 就我个人而言,我认为还不够彻底,因此我可能更愿意考虑发展得更为积极。尽管这似乎是最完整的实现(例如,读取和写入

  • 问题内容: 我有一个maven spring项目(最新版本),我想编写一些junit测试(最新版本)。 我的问题是我的Spring bean是自动装配的,当我从junit test调用它们时,我得到了空指针异常,因为spring不能自动装配它们。 如何加载上下文,以便自动连线? 问题答案: 您是否学习过Spring参考文档中的“ 测试”一章?这是您应该从以下示例开始的示例: 如果您进入,则需要-但

  • 问题内容: 我的Maven依赖项出了什么问题。当我包含JPA时,我会列出pf例外 这是我的Maven依赖项 我的例外 和我的源代码 因此,我没有任何想法(不幸的是,没有示例)如何运行Spring boot和休眠两者。 问题答案: 您是否为数据源设置了或?这是一个例子: 有关可以在何处放置配置文件以及如何配置应用程序以处理任何目录中的属性文件的说明,请参阅此链接以获取更多信息。

  • 问题内容: 我想使用SpringContextTests测试我的Dao类。 在我的方法类中,我扩展了,以便我的测试类与JUnit4集成。我还设置了配置,并在和的DownDown中进行了初始化和数据库清理。我的测试课效果很好。 我的问题是,当我运行测试类并且数据库中充满了数据时,原始数据没有回滚并且数据库被清除了。在该方法中,我清除数据库并填充数据,以为我可以回滚数据库,但不能回滚。 任何人都可以找

  • 问题内容: 我正在设计一个基于JPA / Hibernate,Spring和Wicket的新应用。我对DAO和Service层之间的区别还不清楚。根据维基百科,DAO是 一个为某种类型的数据库或持久性机制提供抽象接口的对象,提供某些特定的操作而不公开数据库的详细信息。 我想知道DAO是否可以包含与数据访问无关的方法,但是使用查询执行起来会更容易吗?例如,“获取在一组特定机场上运营的所有航空公司的列