DAO 级别布尔方法的最佳实践
Best practices for boolean methods in DAO level
在 DAO 级别 (Hibernate/JPA) 中实现检索 布尔值 的方法的最佳实践是什么。
- Return 值列表并检查 null 或 isEmpty() 或
- Return 一次布尔值
(代码是虚构的,与现实世界没有任何相似之处)
@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
另一方面,当你return一个集合时,它应该首先通过网络传递很多值并将所有属性映射到你的实体class - 这些操作很耗时
在 DAO 级别 (Hibernate/JPA) 中实现检索 布尔值 的方法的最佳实践是什么。
- Return 值列表并检查 null 或 isEmpty() 或
- Return 一次布尔值
(代码是虚构的,与现实世界没有任何相似之处)
@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
另一方面,当你return一个集合时,它应该首先通过网络传递很多值并将所有属性映射到你的实体class - 这些操作很耗时