我正在使用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&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&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指向我的内存数据库?
提前致谢!
答案 0 :(得分:0)
您可以执行以下操作:
1.创建一个指向In Memory DB的数据源bean,如下所示
<script src="https://maps.googleapis.com/maps/api/js?libraries=geometry"></script>
<div id="map_canvas"></div>
2.定义一个EntityManagerFactory,它将引用此DataSource。
3.在testConfig.xml中添加这两个bean
4.使用JUnit运行
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="org.hsqldb.jdbc.JDBCDriver" />
<property name="jdbcUrl"
value="jdbc:hsqldb:file:/data/data.db" />
</bean>
答案 1 :(得分:0)
由于您没有使用Spring,您可以尝试基于Maven的解决方案。这涉及在src / test / resources / META-INF下使用相关属性创建单独的persistence.xml。
运行测试时,此persistence.xml应优先于src / main / resources中的那个。