package com.softwaremill.common.cdi.persistence;
import org.hibernate.ejb.Ejb3Configuration;
import org.jboss.arquillian.testng.Arquillian;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import java.io.IOException;
/**
* @author Adam Warski (adam at warski dot org)
*/
public abstract class AbstractHibernateTest extends Arquillian {
private EntityManagerFactory emf;
private Ejb3Configuration cfg;
@BeforeClass
public void init() throws IOException {
cfg = new Ejb3Configuration();
cfg.configure("hibernate.test.cfg.xml");
configure(cfg);
emf = cfg.buildEntityManagerFactory();
}
protected abstract void configure(Ejb3Configuration cfg);
@AfterClass
public void close() {
emf.close();
}
public EntityManager newEntityManager() {
return emf.createEntityManager();
}
public EntityManager newReadOnlyEntityManager() {
EntityManager em = newEntityManager();
EntityManagerUtil.makeEntityManagerReadOnly(em);
return em;
}
}