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 和服务对象,这里的最佳实践是啥?