在DAO级别(Hibernate / JPA)中实现检索布尔值的方法的最佳实践是什么?


返回值列表并检查null或isEmpty()或
一次返回布尔值


(代码是虚构的,在现实世界中没有任何相似之处)

@Repository
public interface UserDao  {

    User getUsersById(List<Integer> userIds);

    boolean isContainsUsers(List<Integer> userIds);
}

@Service
public class UserService{

    @Autowired
    UserDao userDao;

    public void doBusinessLogicWithUser(List<Integer> userIds){

       boolean isContainsUsers = userDao.getUserById(userIds).isEmpty();

       boolean isContainsUsers = userDao.isContainsUsers(userIds);
    }

}


提前致谢!

最佳答案

一次返回布尔值应该工作得更快,因为您可以编写一个很好的查询,例如:

select count(*) != 0 from table t where t.id in :ids


另一方面,当您返回一个集合时,它首先应该通过网络传递很多值并将所有属性映射到您的实体类-这些操作很耗时

09-12 12:23