gpt4 book ai didi

java - 如何在BaseDao中获取EntityManager(Maven+JSF+hibernate)

转载 作者:太空宇宙 更新时间:2023-11-04 12:40:14 27 4
gpt4 key购买 nike

我有带有 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

Spring 我会这样做:

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 项目中怎么办呢?

最佳答案

使用 Hibernates 工厂方法:

// Use persistence.xml configuration
EntityManagerFactory emf = Persistence.createEntityManagerFactory("mainDataBase")
EntityManager em = emf.createEntityManager();
// Retrieve an application managed entity manager
// Work with the EM
em.close();

取自 docs .

关于java - 如何在BaseDao中获取EntityManager(Maven+JSF+hibernate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36905321/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com