DAO 级别布尔方法的最佳实践

Posted

技术标签:

【中文标题】DAO 级别布尔方法的最佳实践【英文标题】:Best practices for boolean methods in DAO level 【发布时间】:2018-03-21 16:03:01 【问题描述】:

在 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);
    


提前致谢!

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

感谢您的反馈。如果我正确理解你最好使用这个方法:boolean isContainsUsers()

以上是关于DAO 级别布尔方法的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章