【发布时间】:2016-08-22 15:59:05
【问题描述】:
我有一个带有 Hibernate 的 JSF maven 项目。项目中有一些 DAO 类,但我认为它没有实现。
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory from standard (hibernate.cfg.xml)
// config file.
Configuration configuration = new Configuration().configure();
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().
applySettings(configuration.getProperties());
sessionFactory = configuration.buildSessionFactory(builder.build());
} catch (Throwable ex) {
// Log the exception.
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
在每个 DAO 中我都调用这个方法
Session mySession = HibernateUtil.getSessionFactory().openSession();
然后进行交易。
现在我想创建通用 BaseDAO 类并在其中创建基本 CRUD 操作。但我需要得到EntityManager。如何在我的 BaseDao 中getEntityManager?
春天我会这样做:
public class BaseJpaDao<E> implements BaseDao<E>{
protected Class<?> entityClass;
@PersistenceContext(unitName = "mainDataBase")
private EntityManager entityManager;
public BaseJpaDao(Class<?> entityClass) {
this.entityClass = entityClass;
}
@Override
public E persist(E e) {
entityManager.persist(e);
return e;
}
但是在非spring项目中怎么做呢?
【问题讨论】:
标签: java hibernate maven hibernate-entitymanager