我想知道如何更好地处理JPA中的where语句。
有两种方法。
或者使用条件查询,如
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Profile> c = cb.createQuery(Profile.class);
Root<Profile> root = c.from(Profile.class);
c.where(cb.equal(root.get(Profile_.email), email));
List<Profile> resultList = em.createQuery(c).getResultList();或者选择整个表并在java中迭代,如
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Profile> c = cb.createQuery(Profile.class);
// Root<Profile> root = c.from(Profile.class);
// c.where(cb.equal(root.get(Profile_.email), email));
List<Profile> resultList = em.createQuery(c).getResultList();
for (Profile profile : resultList) {
if (profile.getEmail().equals(email)) {
//todo
}
}优先的方式是什么?哪种赞成和反对存在?
发布于 2014-05-28 11:21:31
在第一种情况下产生的选择可以比第二种情况下的实例过滤速度快几个数量级。
数据库选择数据的速度非常快,效率很高,所以我不知道第一种方法的任何缺点。
第二种方法的缺点是使用第一种方法时不需要执行的任务:
https://stackoverflow.com/questions/23910154
复制相似问题