我有一个Spring / Hibernate网络应用程序,该应用程序具有一些在内存中的HSQL数据库上运行的集成测试。由于hbm2ddl = create,Hibernate使用了这个空白数据库并创建了我的所有测试表和约束。但是,我有一个新的bean,在它的afterPropertiesSet()方法期间检查数据库中的特定配置值,因此,当初始化此bean时,数据库中必须存在这样的行。
有什么好的方法来设置与Rail的测试装置等效的Java / Spring / Hibernate?我试图找到一种方法来告诉Hibernate“无论何时创建此表,都应在之后立即插入这些行”。我找不到可以添加的回调或挂钩,但是也许还有另一种方法。
我试图找到一种方法来告诉Hibernate“无论何时创建此表,都应在之后立即插入这些行”
从Hibernate 3.1开始,您可以import.sql在Hibernate的运行时类路径中包含一个名为的文件,并且在模式导出时,Hibernate将在导出模式后执行该文件中包含的SQL语句。
import.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的博客,他撰写了一篇不错的文章。请记住,如果要添加其他数据库对象(索引,表等),还可以使用辅助数据库对象功能。
import.sql:在单元测试中轻松导入数据
Hibernate具有一个简洁的小功能,该功能严重不足文档,并且未知。您可以在SessionFactory创建数据库模式后立即在创建过程中执行SQL脚本,以将数据导入到新数据库中。您只需要import.sql在您的类路径根目录中添加一个名为的文件,然后将create或 设置create-drop为您的 hibernate.hbm2ddl.auto属性。
SessionFactory
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的博客,他撰写了一篇不错的文章。请记住,如果要添加其他数据库对象(索引,表等),还可以使用辅助数据库对象功能。
它仍然没有真正的记录。