mysql - 让hibernate指向与DBUnit相同的DB连接

标签 mysql hibernate hsqldb dbunit

我正在使用 hiberante jpa 连接到 mysql 数据库。

我的 persistence.xml 中的持久单元如下所示:

<persistence-unit name="inventoryManager">          

        <!--some settings-->

        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/inventory?useSSL=false&amp;useUnicode=true&amp;useJDBCCompliantTimezoneS‌​hift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="1234"/>

            <!--Hibernate properties-->
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
            <property name="hibernate.show_sql" value="false"/>
            <property name="hibernate.format_sql" value="false"/>
            <property name="hibernate.hbm2ddl.auto" value="validate"/>
        </properties>
    </persistence-unit>

我的 DAO 正在使用此连接来执行数据库的所有操作。

我也使用 DBUnit 进行测试,但我使用的是内存数据库(hsql)。它在我的测试用例构造函数中的配置如下所示:

       System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, "org.hsqldb.jdbcDriver" );
       System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, "jdbc:hsqldb:mem:db" );
       System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, "sa" );
       System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, "" );
       System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_SCHEMA, "db" ); 

所以当我运行一个调用一个 DAO 的测试时。 DAO实例化一个entityManager,它指向persistence.xml中指定的mysql连接

问题是:如何使 DAO 中的entityManager 指向我的内存数据库?

提前致谢!

最佳答案

由于您没有使用 Spring,因此您可以尝试基于 Maven 的解决方案。这涉及到在 src/test/resources/META-INF 下创建一个具有相关属性的单独的 persistence.xml。

运行测试时,此 persistence.xml 应优先于 src/main/resources 中的持久性文件。

关于mysql - 让hibernate指向与DBUnit相同的DB连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37278483/

相关文章:

java - 使用最新版本的 jdbc 连接器连接到 1.8 HyperSQL 数据库

mysql - 列名和撇号

java - 映射 list<Entity> hibernate 的 Map 集合

java - Hibernate createSqlQuery 设置变量

sql - 内存数据库的用例是什么?

html - 如何使用 jdbc、servlets 和 html 将文件远程上传到 MySQL 数据库

mysql - 从一列中提取子字符串并将其放入另一个 SQL

mysql - INSERT INTO SELECT 如何按正确顺序插入?

php - 通过外键搜索

java - UUID 作为 @ManyToOne hibernate 中的外键