Performance: Repository pattern for data access
MEDIUM IMPACT
This pattern affects how data is fetched and managed, impacting server response time and client perceived loading speed.
class UserRepository: def __init__(self): self.cache = {} def get_user(self, user_id): if user_id not in self.cache: self.cache[user_id] = User.query.filter_by(id=user_id).first() return self.cache[user_id] class UserService: def __init__(self, repo): self.repo = repo def get_user_name(self, user_id): return self.repo.get_user(user_id).name def get_user_email(self, user_id): return self.repo.get_user(user_id).email
class UserService: def get_user_name(self, user_id): return User.query.filter_by(id=user_id).first().name def get_user_email(self, user_id): return User.query.filter_by(id=user_id).first().email
| Pattern | Database Queries | Server Response Time | Client Load Impact | Verdict |
|---|---|---|---|---|
| Direct multiple queries | Multiple per user | High | Slower LCP | [X] Bad |
| Repository with caching | Single per user | Low | Faster LCP | [OK] Good |