cache users

This commit is contained in:
Athou
2013-06-27 11:10:08 +02:00
parent 0ff4438731
commit d98a1621c8
2 changed files with 14 additions and 5 deletions

View File

@@ -21,7 +21,8 @@ public class UserDAO extends GenericDAO<User> {
query.where(builder.equal(builder.lower(root.get(User_.name)),
name.toLowerCase()));
TypedQuery<User> q = em.createQuery(query);
cache(q);
User user = null;
try {
user = q.getSingleResult();
@@ -36,7 +37,8 @@ public class UserDAO extends GenericDAO<User> {
Root<User> root = query.from(getType());
query.where(builder.equal(root.get(User_.apiKey), key));
TypedQuery<User> q = em.createQuery(query);
cache(q);
User user = null;
try {
user = q.getSingleResult();

View File

@@ -9,6 +9,7 @@ import javax.inject.Inject;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateUtils;
import com.commafeed.backend.dao.FeedCategoryDAO;
import com.commafeed.backend.dao.FeedEntryStatusDAO;
@@ -50,12 +51,18 @@ public class UserService {
boolean authenticated = encryptionService.authenticate(password,
user.getPassword(), user.getSalt());
if (authenticated) {
user.setLastLogin(new Date());
userDAO.saveOrUpdate(user);
Date lastLogin = user.getLastLogin();
Date now = new Date();
// only update lastLogin field every hour in order to not
// invalidate the cache everytime someone logs in
if (lastLogin == null
|| lastLogin.before(DateUtils.addHours(now, -1))) {
user.setLastLogin(now);
userDAO.saveOrUpdate(user);
}
return user;
}
}
return null;
}