У меня есть проект JSF maven с Hibernate. В проекте есть несколько классов DAO, но я думаю, что это неудачная реализация.Как я могу получить EntityManager в BaseDao (Maven + JSF + hibernate)
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
. Как я могу getEntityManager
в моем BaseDao?
Весной я делаю это:
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;
}
Но как это сделать в не весной проект?
Что означает этот параметр -myPersistenceContext Мне нужно установить путь к myPersistenceContext.xml? – user5620472
Извините, это должен быть блок постоянной. Вы должны создать файл [persistence.xml] (http://docs.oracle.com/cd/E16439_01/doc.1013/e13981/cfgdepds005.htm) в src/META.INF (или src/main/resources/META- INF, если это проект maven) и назовите это устройство, как в вашей весенней конфигурации. – Stefan