如何向Spring Hibernate项目添加装置

如何向Spring Hibernate项目添加装置,hibernate,spring,Hibernate,Spring,我正在尝试向一个使用Hibernate作为JPA的Spring项目添加装置/示例数据 我已经创建了一个fixtures.sql文件(在WEB-INF/classes/fixtures.sql中),其中包含了一系列sql查询,我希望在开发时执行这些查询,用示例数据填充数据库。 在开发模式下,我使用的是内存数据库Hypersonic InMemory,当我部署到Postgres或MySQL时,将加载相同的数据 应用程序重新启动/启动时如何加载此数据?每次应用程序重新启动时,Hypersonic都会清

我正在尝试向一个使用Hibernate作为JPA的Spring项目添加装置/示例数据

我已经创建了一个fixtures.sql文件(在WEB-INF/classes/fixtures.sql中),其中包含了一系列sql查询,我希望在开发时执行这些查询,用示例数据填充数据库。 在开发模式下,我使用的是内存数据库Hypersonic InMemory,当我部署到Postgres或MySQL时,将加载相同的数据

应用程序重新启动/启动时如何加载此数据?每次应用程序重新启动时,Hypersonic都会清除内存中的数据库,这意味着每当我想在前端测试某些东西时,我都需要执行所有步骤来创建样本数据

database.properties:

database.password=
database.url=jdbc\:hsqldb\:mem\:myproject
database.username=sa
database.driverClassName=org.hsqldb.jdbcDriver
persistence.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
            <!-- value="create" to build a new database on each run; value="update" to modify an existing database; value="create-drop" means the same as "create" but also drops tables when Hibernate closes; value="validate" makes no changes to the database -->
            <property name="hibernate.hbm2ddl.auto" value="create"/>
            <property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
            <property name="hibernate.connection.charSet" value="UTF-8"/> 
        </properties>
    </persistence-unit>
</persistence>

org.hibernate.ejb.HibernatePersistence
三种可能的方法:

  • 使用import.sql(请参见“创建”一节)

  • 使用DBUnit(请参阅)

  • 编写代码,通过创建域对象并保存它们,在@SetUp(或app startup)处使用填充数据库


  • 您可以使用
    ,请参阅。

    如果您喜欢更结构化的方法,并且如果您的项目足够大,您应该查看和或。
    你也应该考虑如果你需要短暂的新鲜固定装置或持续固定装置(见XUnE测试模式)。对于spring,这种设置可以与环境抽象和bean配置文件一起使用(请参见3.1中的@Profile)

    这是spring安全性建议加载角色和权限的方式,但今天早些时候无法使其正常工作。感谢链接:-)经过一点调整,我的import.sql工作正常,非常感谢!不得不在我的persistence.xml中添加一行额外的代码来让它工作:出于好奇,初始数据叫什么?在Pylons框架(python框架)中工作时,它被称为fixture,Spring/Hibernate使用相同的术语吗?我认为Spring/Hibernate称它为fixture没有什么不同。这是这类事情的常用术语。或者更确切地说,这些数据是测试装置的一部分。liquibase的超级粉丝,有没有一种很好的方法将其与Hibernate项目集成?如果您有一个java配置的spring项目,JaRB将非常适合:
    @Bean public PopulateApplicationListener PopulateApplicationListener(){return new PopulateApplicationListenerBuilder().initializer().add()(新的SqlDatabasePopulator(dataSource,新的ClassPathResource(“import.sql”))).build();}
    我们还支持异步加载数据/特定于数据库的脚本/或目录中的一组文件。