public class User extends Model<User> {
public static final User dao = new User().dao();
}
文档这块定义了全局变量,可以在其他地方调用,方便是方便了,不过还是有几点疑惑:
1、文档里面提到可能有安全问题,这块不是很理解,能否通俗讲解一下会出现哪些问题;
2、既然只能用于查询,我直接用new实例操作查询、更新、删除不是也一样,用全局除了少写点代码,还有什么优点吗;
3、我全局里面定义了dao,然后在service里面在定义一个new dao,然后这个dao可以用于查询、更新、删除,这样用有什么弊端吗。
private User dao=new User().dao();
项目:JFinal
如果没调用 dao() 方法,并且前面是 static,那么这个对象是所有线程都可以并发使用的,自然会有线程安全问题,因为内部并没有使用 synchronized 这类锁机制
如果使用的时候每次 new 出来,功能上确实是完全一样的,就是为了省点时空,仅此而已
Model 中的 dao 是不提倡这么用的,而是在 Service 中使用一个 private Xxx dao = new Xxx().dao() , 这样可以避免在业务层之外操作数据库
在首页下载一下 jfinal demo,参考里面的用法,一定要有业务层,一定不要在 model 中 new Xxx().dao() 出来,养成良好的开发习惯