pka*_*nen 13 java jpa criteria-api jpa-2.0
这似乎是一个非常简单的问题,但我还没有找到一个确定的答案.我有一个DAO类,它通过使用条件查询自然地查询数据库.所以我想知道使用相同的CriteriaBuilder实现来创建不同的查询是否安全,或者我是否必须为每个查询创建新的CriteriaBuilder实例.下面的代码示例应说明我想要做的事情:
public class DAO() {
CriteriaBuilder cb = null;
public DAO() {
cb = getEntityManager().getCriteriaBuilder();
}
public List<String> getNames() {
CriteriaQuery<String> nameSearch = cb.createQuery(String.class);
...
}
public List<Address> getAddresses(String name) {
CriteriaQuery<Address> nameSearch = cb.createQuery(Address.class);
...
}
}
Run Code Online (Sandbox Code Playgroud)
这样做可以吗?
Pas*_*ent 12
阅读JPA 2.0规范(JSR 317)的3.1.1 EntityManager接口的javadoc :
Run Code Online (Sandbox Code Playgroud)/** * Return an instance of CriteriaBuilder for the creation of * CriteriaQuery objects. * @return CriteriaBuilder instance * @throws IllegalStateException if the entity manager has * been closed */ public CriteriaBuilder getCriteriaBuilder();
以下评论:
的
Query,TypedQuery,CriteriaBuilder,Metamodel,和EntityTransaction而实体管理器是开放的实体管理器获取的对象是有效的.
6.5节构建标准查询
该
CriteriaBuilder接口用于构造CriteriaQuery对象.的CriteriaBuilder实现是通过访问getCriteriaBuilder所述的方法EntityManager或EntityManagerFactory接口.
我希望能够重用单个CriteriaBuilder来为实体管理器的生命周期创建许多查询.但这是我的解释.然而,我最初的测试似乎证实这没有任何问题(相反的确是可怕的).
| 归档时间: |
|
| 查看次数: |
5517 次 |
| 最近记录: |