JiveJdon Community Forums
在线273人   首页   主题总表   培训咨询   精华   查搜   注册    登陆
首页 » 论坛 » 项目工程开发经验谈
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
Go 总共有 6 回复 / 1
 发表新帖子   回复该主题贴
cuibaoliang2004

悄悄话
发表文章: 2
注册时间: 2007年03月30日 10:05
请教banq 大哥,在jdbc开发中,过多使用static方法会有什么问题? 2007年03月30日 10:16 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表 对象生命周期(51)      单例(24)      singleton模式(36)     
我从学java开始,都很少用static来写 数据库的insert select update delete等操作。一直都是jsp+bean(这个bean在页面都要成为对象的)。

工作后发现,公司代码中几乎所有的数据库操作都是静态方法。
我很疑惑,抛开静态方法带来的修改不变和软件架构上的不足不谈。
过多的使用静态方法会不会带来性能上的问题?

有人说当static方法中使用static变量的话会引发多线程的资源互斥的问题。不过在数据库操作中,确实很少使用静态变量。
当然不可否认,这种方法在开发初期确实加快了开发速度,使得很多老的代码中都延续了这种用法。
当然我还在坚持,用dao来实现数据库中操作。

只是我困惑确从来没有得到过解答,人家的程序也跑的好好的,凭什么说人家的不好?
困惑,希望哪位大哥不吝赐教,为小弟解惑
[该贴被cuibaoliang2004于2007年03月30日 10:17修改过]
zuly

悄悄话
发表文章: 56
注册时间: 2007年03月29日 11:42
re:请教banq 大哥,在jdbc开发中,过多使用static方法会有什么问题? 2007年04月02日 13:31 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
使用static方法原因是因为某个类一定cache了一些expensive的对象!

基于JTA的全局事务可以解决这种问题!个人观点,使用static来简单包装Persistence是技术力量不够表现之一!
cuibaoliang2004

悄悄话
发表文章: 2
注册时间: 2007年03月30日 10:05
re:请教banq 大哥,在jdbc开发中,过多使用static方法会有什么问题? 2007年04月02日 19:37 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题

>个人观点,使用static来简单包装Persistence是技术力量不够表现之一!

我也曾用过static方法写一些小工具类,比如时间转化,ip转化等等.
不过,技术力量不够倒也不是吧,他们都是写java三年多的啦.更可能是一种刚开始时的习惯,后来没有深究这个问题吧.

对用static 方法来做持久化,我最大的恐怖在于
1 一个表对应一个类,这个都是用static方法那么,如果出现变动,那么一改都要改好多
2 返回的时候,不是统一用pojo,或者装有pojo的Aarraylist List 等容器装载.
而是hashmap(大map 套小map,key就是字段名),或者其他什么的混合体.

当我来接手或者改的时候痛苦无比.而重新写又要时间,偏偏时间是我们缺乏的,或者这是这个状况形成的原因吧
leyen

悄悄话
发表文章: 12
注册时间: 2006年09月07日 16:49
回复:re:请教banq 大哥,在jdbc开发中,过多使用static方法会有什么问题? 2007年04月14日 23:28 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
返回是map这样的结果真的很恐怖,你还没看见过更恐怖的,返回一堆string[]或者object[]哈哈,然后在往页面一一对应的赋值,吓人不,愁人啊
gltbeyond

悄悄话
发表文章: 35
注册时间: 2007年04月05日 22:59
回复:回复:re:请教banq 大哥,在jdbc开发中,过多使用static方法会有什么问题? 2007年04月15日 21:08 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
jdbc中使用static方法,如static getResults(); 如果过多的人同时访问,就会在方法调用时,会不会A调用此方法没有执行完,线程切换,B来执行此方法,造成数据混乱, 我是这样想的.
gougou3250

悄悄话
发表文章: 97
注册时间: 2007年05月08日 16:48
回复:回复:回复:re:请教banq 大哥,在jdbc开发中,过多使用static方法会有什么问题? 2007年05月09日 09:12 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
singleton lazy initialize 就是一个例子
可能会导致创建多个实例,需要加synchronization
static 是常驻内存的,乱用,可能导致性能问题
[该贴被gougou3250于2007年05月19日 10:48修改过]
s79

悄悄话
发表文章: 24
注册时间: 2007年02月11日 20:47
re:请教banq 大哥,在jdbc开发中,过多使用static方法会有什么问题? 2007年05月20日 22:56 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
static 方法和static变量在使用上是不同的,static方法在编译时就被分配了内存空间,且只有一份。可避免多次创建实例而造成的开销。需要的时候不必new这个类名就可以直接使用,方便、高效。缺点是一个static方法只能调用另外一个static方法,而不能调用动态方法。

static变量则要注意,static变量其实就是全局变量,如果多个线程同时操作者个变量,就一定要同步。

static方法的形参和内部变量,都分配在栈区(stack),是每个线程私有的,线程进入时创建,离开时销毁,并发访问时并不会造成混淆。所以是线程安全的。

java类库很多方法都是static方法。如Integer.parseInt()等所有不需要new之后再使用的方法。所以对于static方法不必过于紧张,如果一个方法比较独立又不与其他动态方法互操作,我都设置其为static。这样不论用到他多少次,他都只有那么一份。当然如果可能只用到0次或很少用到,就不要static了,即便永远每人用到他,他也会一直占用那部分内存。
这个主题有 6 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache 缓存 DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Seam Spring Struts
正在读取,请等待...
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
查询本论坛内 回复超过的热门帖子
     回复该主题贴
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com
anti spam