package foundation.user; import foundation.dao.preload.Bucket; import foundation.data.entity.Entity; import foundation.data.object.DataObject; public class UserBucket extends Bucket { private static UserBucket instance; static { instance = newInstance(); } private UserBucket() { } public static UserBucket getInstance() { return instance; } public static UserBucket newInstance() { return new UserBucket(); } @Override public void activate() { instance = this; } public User getOrLoad(String userId) { User result = null; try { result = get(userId); if (result == null) { synchronized (this) { result = get(userId); if (result == null) { //1. 如果用户不存在,从数据库中加载用户 result = loadOneUserFromDB(userId); if (result == null) { return null; } //2. 将新加载的用户存放到Bucket中 loadOne(result.getId(), result); } } } } catch (Exception e) { e.printStackTrace(); } return result; } private User loadOneUserFromDB(String userId) throws Exception { DataObject dataObject = DataObject.getInstance("sys_user"); Entity entity = dataObject.getTableEntity(userId); if (entity == null) { return null; } User user = new User(); user.load(entity); return user; } }