如何以与JPA提供者无关的方式创建CriteriaBuilder实例?
以JPA提供者无关方式创建CriteriaBuilder实例
要实现与JPA提供者无关的CriteriaBuilder创建,只需基于JPA标准API操作,完全避开厂商特定工具类(比如HibernateUtil),具体步骤如下:
首先通过JPA标准的
Persistence类创建EntityManagerFactory,传入你在persistence.xml中定义的持久化单元名称:// 替换为你的持久化单元名称 EntityManagerFactory emf = Persistence.createEntityManagerFactory("YourPersistenceUnitName");有两种方式获取
CriteriaBuilder:- 直接从
EntityManagerFactory获取:CriteriaBuilder cb = emf.getCriteriaBuilder(); - 先创建标准的
EntityManager,再从中获取:EntityManager em = emf.createEntityManager(); CriteriaBuilder cb = em.getCriteriaBuilder();
- 直接从
使用完毕后记得关闭资源(避免内存泄漏):
em.close(); emf.close();
这种方式完全遵循JPA规范,不管你使用Hibernate、EclipseLink还是其他JPA实现,代码都无需修改,真正做到与提供者无关。
内容的提问来源于stack exchange,提问作者user352290
相关产品推荐
相关产品推荐

