我正在构建一个基于Gradle的Java SE应用程序,它基于Hibernate构建,是我的首选ORM.我的计划是weld-se使用CDI注释EntityManagers在整个应用程序中进行注射.
基于HibernateUtilHibernate文档中的常见帮助程序类,我转向JPA接口并添加了@Produces注释以提供生产者方法(我还添加了一个空META-INF/beans.xml):
package dao;
import javax.enterprise.inject.Disposes;
import javax.enterprise.inject.Produces;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class HibernateUtil {
private static final EntityManagerFactory emf = buildEntityManagerFactory();
private static EntityManagerFactory buildEntityManagerFactory() {
try {
return Persistence.createEntityManagerFactory("persistenceUnit");
} catch (Throwable ex) {
System.err.println("Initial EntityManagerFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
@Produces
public static EntityManager createEntityManager() {
return emf.createEntityManager();
}
public static void closeEntityManager(@Disposes EntityManager em) {
System.out.println("Closing EM");
try …Run Code Online (Sandbox Code Playgroud)