Java Web开发中的DAO为何不用static方法?

2024-12-02 17:40:08
推荐回答(5个)
回答1:

当然可以用static方法的,只是你没发现,用static方法的话你得保证每次调用方法的时候这个用到的Connection不能被两个以上的线程同的调用(即线程安全问题);
当然你可以自己写一个连接池,用来缓存连接。其实很多没用框架的项目都是把DAO写成单例的(和static很相关的一种模式)但是这样违背了JAVA面向接口编程的原则,加上框架越来越流行,所以用得很少了。

回答2:

你可以去看看JAVA中关于JDBC的API设计就知道了。其实DAO中操作最费时的是在数据库的连接打开和关闭,如果采用连接池的话因为具有了缓存功能,所以开销可以大大减少。

此外SQL执行的速度还与你的SQL写法,是否采用了预编译语句,是否采用了变量绑定、Oracle的SQL共享池有关。

如果为了贪图一是方便而使用static的话,除了会造成多线程下的混乱之外,你的方法里面将不能使用任何对对象的方法和变量的引用,这会影响到其它方法和变量的定义。

回答3:

static 方法中只能使用类中的static静态属性变量 在类中会经常用到非静态的属性变量。。。所以为了防止这样的情况就不用static了。。。

回答4:

static需要做同步,那就损失效率

回答5:

如果只是看并发安全和性能的话,使用 static 和对象调用是没有太大区别的,相反,static 的性能会更好。
但是正规的 Web 项目开发一般是不会使用这种方式的。因为企业的 web 项目不仅需要考虑性能、安全问题,还需要考虑可扩展性、可维护性等。如果项目中的所有方法都使用 static,这相当于抛弃了面向对象的设计原则,从而使得可扩展性、可维护性大大降低。
因此,如果只是自己练手的小项目,当然可以图个方便。但是,在以后的工作开发中,还是不要养成这种习惯比较好。