帮我看看我的controller、service、model这样分层对吗?
@JFinal 你好,想跟你请教个问题:
假设我做一个任务管理的模块
这个是model:
public class Task extends Model<Task> {
}
然后这个是service:
public class TaskService {
private final Task taskDao = new Task();
private final Role roleDao = new Role();
private final User userDao = new User();
...
}
下面是控制器controller:
public class TaskController extends BaseController {
private TaskService taskService = enhance(TaskService.class);
...
}
像我这样子的用法对吗?我测了一下每次controller里面的方法被调用,service都会new 一个出来,这样好吗?TaskService里面的dao也是一样,应该都是新new出来。这样会影响到系统性能吗?如果改进的话,我应该怎么写比较好?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
恍然大悟,感谢jfinal!
回复
dao 从 model 中删除,移到 service 中是强列提倡的作法,以前在model中写dao,一是容易误用非查询方法,二是容易让用户随意写查询,查询数据库的代码一定要写在业务层中
如果 Service 是无状态的,可以这样:
这样就可以在使用的地方不需要创建新对象了,controller 中可以这样:
注意这里的 Service 一定要是线程安全的才可以全局共享
改成在 Dao 和service 里面 public static Dao dao =new Dao() service 也一样