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 级别布尔方法的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

DAO(数据访问对象)最佳实践 - 我看到的示例同时使用 DAO 和服务对象,这里的最佳实践是啥?

DAO 实施的最佳实践

设置布尔标志的最佳实践

Spring Transactions 和通用 DAO 和服务的最佳实践

DTO、DAO 和实体?是实体需要吗?那三个的最佳实践?

使用Hibernate时使用Services和DAO获取DTO和实体的最佳实践[关闭]