我在做一个网站(Spring栈完全前后端分离),设计Dao时,User实体类包含基本信息(password, username...),然后含有一个UserExt对象保存额外信息(entry_date, leave_date...),还含有List<Role>保存角色信息(角色中拥有权限),还含有一个List<Permission>保存自有的权限信息。
由于User含有非常多的信息,在做UserService时,User需分步获取的各部分信息,类似于:
// 获取用户基本信息
User user = UserDao.getUserByUsername(username);
// 获取用户额外信息
int userId = user.getId();
UserExt userExt = UserDao.getUserExtByUserId(userId);
user.setUserExt(userExt);
// 获取用户角色信息
List<Role> roles = UserDao.getRolesByUserId(userId);
user.setRoles(roles);
// 获取用户权限信息
List<Permission> permissions = UserDao.getPermissionsByUserId(userId);
user.setPermissions(permissions)
// 得到最终组装成的 user
现在问题是:
因为每次请求都肯定要使用User信息,也就是每次都需要很多的Dao操作,上面还不是最惨,最惨的是还需要Dao组装role的权限,又是一批Dao请求,这样会不会导致Web性能大幅下降,应如何改善呢?
多次获取数据组装肯定是比一次性获取数据慢,
1 建议弄个视图把,还方便筛选到底哪些字段需要加载哪些字段不需要加载,
你总结一下需要哪些字段,
然后建立一个视图
后面直接读取视图
2 上ef,信任ef的sql优化
视图这种方案应该是我需要的解决方法。
ef好像是dotnet中的吧,,因为我是新手,刚会使用Spring,暂时还不考虑换其它框架。
谢谢谢谢!
@鸣黎: 我现在的目标就是建立一个自己的网站,,,但是一窍不通,有空多交流啊
@猝不及防: 你还不能搞一个自己的网站?你的博客我可扫了一眼,不要欺负我们这些刚入门的
@鸣黎: 桌面端的我熟悉些..网站真的一点都不懂...
@猝不及防: 我也是一点一点看资料学的,缺少有人交流指教,正好搭个伙,哈哈哈