我有一个运行正常的DBUnit测试,但需要花费很长时间(4-5分钟)来创建实体管理器工厂。我正在使用JPA与hibernate和SQL服务。如果有人能对此有所了解,那将会有很大的帮助。在Sql server上我的机器似乎更快归咎于它:)这是我的设置代码。
@BeforeClass
public static void initEntityManager() throws Exception {
emf = Persistence.createEntityManagerFactory("primary");
em = emf.createEntityManager();
tx = em.getTransaction();
connection = new DatabaseConnection(((EntityManagerImpl) em).getSession().connection());
dataset = getDataSet();
}
这是我的Persistence.xml
<persistence-unit name="primary" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>com.prototype.database.Customer</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<!-- Properties for Hibernate -->
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect" />
<property name="hibernate.connection.username" value="testuser" />
<property name="hibernate.connection.password" value="testuser" />
<property name="hibernate.connection.url" value="jdbc:sqlserver://localhost:1433;DatabaseName=testdb"/>
</properties>
</persistence-unit>
答案 0 :(得分:2)
最后设法将EntityManagerFactory操作时间平均从大约255秒降低到大约3秒。将hibernate-entitymanager从3.4.0.GA升级到3.6.3.Final并瞧!单元测试现在就像单元测试一样,不到6秒。为了我的知识,我会尝试寻求这种改进的答案。
答案 1 :(得分:0)
我建议你试着找出瓶颈所在:
1 - 使用终端连接到SQLServer。
2 - 修改连接以链接到不同的数据库(MySQL,PostgreSQL,H2,...)。
如果两者都运行顺利,那么问题出在您的配置中,只要我对JPA不太熟悉,我就无法再帮助您了。