论坛首页 Java企业应用论坛

有关在DAO中使用static函数

浏览 4530 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-07-13  
DAO
在DAO对象和业务逻辑层中,很多时候都可以把处理方法写成static方式,因为这样客户端调用起来很方便。但是这样使用多了,回头一看,DAO中满眼都是static方法,因为static方法类似全局方法,不符合OO的原则。虽然不能为了OO而OO,但我想太多的static方法总不是个好现象。

欢迎各位的高见!
   发表时间:2004-07-13  
哪位能否比较一下使用static和不使用的优劣呢?
0 请登录后投票
   发表时间:2004-07-13  
个人不认为过多使用static是个好方法,以前学操作系统的时候,据说所有的static数据或者方法好像都是放在内存另外一块固定的地方的,和常量放在一起。但是要说效率什么的,还真不好说。只是觉得不太符合OO。
0 请登录后投票
   发表时间:2004-07-14  
在DAO中使用static主要有以下不好之处:

最主要的,作为数据的核心抽象层,让你的业务直接绑定在你的DAO的实现上,没有办法获得像使用接口后带来的某些好处。比如持久层实现策略上的切换,假设你的多数业务都是使用hibernate作为默认的持久层策略,特定业务需要使用jdbc来进一步优化,你如何用统一的DAO模型实现?

其次,因为实现被绑定,很难再进行结构上的优化。我不同意楼上的说法。线程并发优化是一个比较复杂的问题。直接使用static方式,你需要对代码做同步处理,高并发情况下,会出现很多线程等待的情况。很多时候仅仅只需要new一个新的实例,就能极大的提高效率。也就是说,我们需要能够在时间和空间的策略上做有效的平衡和切换。

这个缺陷其实也是上面所说的延伸。

另:现在内存等硬件如此便宜,大多数情况下确实可以不用太在意。为你的服务器加1G的内存,比你多购买一个oracle数据库连接的lincense要便宜的多。
0 请登录后投票
   发表时间:2004-07-14  
使用static方式,就不能实现完整得DAO模式,比如不能定义统一的DAO接口,因而也就不能使用DAOFactory,这样,DAO带来的好处就少了许多。
0 请登录后投票
   发表时间:2004-07-15  
yapex 写道
在DAO中使用static主要有以下不好之处:

最主要的,作为数据的核心抽象层,让你的业务直接绑定在你的DAO的实现上,没有办法获得像使用接口后带来的某些好处。比如持久层实现策略上的切换,假设你的多数业务都是使用hibernate作为默认的持久层策略,特定业务需要使用jdbc来进一步优化,你如何用统一的DAO模型实现?

其次,因为实现被绑定,很难再进行结构上的优化。我不同意楼上的说法。线程并发优化是一个比较复杂的问题。直接使用static方式,你需要对代码做同步处理,高并发情况下,会出现很多线程等待的情况。很多时候仅仅只需要new一个新的实例,就能极大的提高效率。也就是说,我们需要能够在时间和空间的策略上做有效的平衡和切换。

这个缺陷其实也是上面所说的延伸。

另:现在内存等硬件如此便宜,大多数情况下确实可以不用太在意。为你的服务器加1G的内存,比你多购买一个oracle数据库连接的lincense要便宜的多。


同意,直接使用static方式,最大的问题是需要对代码做同步处理
1 请登录后投票
   发表时间:2004-07-25  
同意楼上的做法,我现在也有感于团队中成员胡乱的使用
static进行设计的,如果仅仅只是数据的读取,这样的singleton是可以接受的,不然同步设计必须谨慎
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics