[英]replacement for import.sql file in spring/hibernate project
在我的春季項目中,我已將hibernate配置為根據實體類在數據庫中創建表。 另外,當我需要在此表上插入一些初始值時,我使用sql命令在類路徑上放置了一個名為import.sql的文件,以在數據庫中插入數據。 我想知道是否有一種無需使用我的java類就可以在我的項目中放置import.sql文件的情況下完成此導入功能的方法。 有人知道這是否可能嗎?
您可以考慮兩種選擇,
第一個不僅是java,而且由於您正在使用該堆棧,因此可以考慮使用Spring DBUnit。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/context.xml"})
@TestExecutionListeners({DependencyInjectionTestExecutionListener.class,
DirtiesContextTestExecutionListener.class,
TransactionalTestExecutionListener.class,
DbUnitTestExecutionListener.class})
@DbUnitConfiguration(dataSetLoader = ColumnSensingFlatXMLDataSetLoader.class)
public class TemplateIT {
@Before
public void after() throws Exception {
IDatabaseConnection connection;
IDatabaseTester databaseTester = new JdbcDatabaseTester(JDBC_DRIVER, JDBC_URL + "&sessionVariables=FOREIGN_KEY_CHECKS=0", USER, JDBC_PASSWORD);
connection = databaseTester.getConnection();
QueryDataSet partialDataSet = new QueryDataSet(connection);
DatabaseOperation.DELETE_ALL.execute(connection,
partialDataSet);
}
@DatabaseSetup("../dbunit/data.xml")
@ExpectedDatabase("../dbunit/expected.xml")
@Test
public void testDBUnit() throws Exception {
...
}
}
數據是通過XML處理的,但是由於該庫專注於測試,因此它提供了許多直接與SQL處理不相上下的實用程序。 借助@ExpectedDatabase等,可以更輕松地處理部分數據,簡化斷言。
其次,我經常使用的一種“僅Java”設置是通過休眠實體准備數據。 我假設您使用的是通用DAO,即使沒有使用,也很容易設置。 比起@Before測試方法,只需按照自己的喜好設置數據庫即可
@Before
public void before() throws DAOException {
Company company = new Company();
companyDAO.makePersistent(company);
}
我贊成這種方法,因為我認為它提高了可移植性(通常在內存DB中用於測試),可讀性和可維護性。 缺點是測試中有很多代碼,准備數據對於復雜對象可能會很乏味。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.