首页 新闻 会员 周边 捐助

数据库操作该不该写成静态方法?

0
悬赏园豆:20 [待解决问题]

参考了网上很多的说法,有人说好也有人说不好,说考虑到什么并发线程和单线程什么的,希望有位大侠能告诉我该怎么写?

疯一样的男人的主页 疯一样的男人 | 初学一级 | 园豆:9
提问于:2010-11-11 13:27
< >
分享
所有回答(6)
0

不涉及到接口继承的,就用静态,这样就长期处于内存中,可以避免每次调用对象在创建时,造成的更多损耗

chenleinet | 园豆:270 (菜鸟二级) | 2010-11-11 14:10
因为网站有很多的人访问,所以说会不会因为很多的线程访问而出问题呢????
支持(0) 反对(0) 疯一样的男人 | 园豆:9 (初学一级) | 2010-11-11 19:30
@疯一样的男人:因为网站有很多的人访问,所以说会不会因为很多的线程访问而出问题呢????
支持(0) 反对(0) 疯一样的男人 | 园豆:9 (初学一级) | 2010-11-11 19:34
问题呢,就是一个方法执行慢时,会造成排队,但总比你创建对象,通过对象,去访问方法快,因为对象调用方法,还涉及到内存加载方法的问题
支持(0) 反对(0) chenleinet | 园豆:270 (菜鸟二级) | 2010-11-12 09:27
0

静态的方法生成是会占内存的,如果你的程序对数据库操作频繁的话建议可以写成静态的,

邓大林 | 园豆:200 (初学一级) | 2010-11-11 14:15
0

如果是winform可以写成静态的,因为一般winform只有一个数据库连接。

但是asp.net就不要用静态的了,因为web程序是并发的,最好是每个人一个数据库连接。

wang_yb | 园豆:4891 (老鸟四级) | 2010-11-11 14:31
每人一个链接,你真牛,并发可不是靠每人一个链接解决的
支持(0) 反对(0) chenleinet | 园豆:270 (菜鸟二级) | 2010-11-11 16:17
0

静态对象可以节省频繁访问引起的频繁分配内存、释放内存、占用内存的性能开销,和数据库连接的多少没有关系。〔前提是不要声明静态的连接对象等等,只是声明数据访问层的静态对象〕

邢少 | 园豆:10926 (专家六级) | 2010-11-11 15:04
0

静态或者动态,和你怎样分配Connection对象有关,数据持久化是否分离有关,这是架构问题。静态和动态各有各好,主要看你想怎样解耦,我偏向动态方式。因为可以做IoC。

静态可以参考Enterprise Lib里面的查询方式,如Connection作为参数传入,如果传入Connection是关闭的,就自动打开,自动关闭,如果是已经打开,那么就由方法外面打开,还有就是事务怎样管理,也可以作为参数。

另外Winform 直接连数据库这样的做法并不好,客户端多的话,你有多少db连接都不够用。

沉默的糕点 | 园豆:1786 (小虾三级) | 2010-11-11 15:33
能给个例子吗?(小弟很不懂)
支持(0) 反对(0) 疯一样的男人 | 园豆:9 (初学一级) | 2010-11-11 19:31
@疯一样的男人:能给个例子吗?(小弟很不懂)
支持(0) 反对(0) 疯一样的男人 | 园豆:9 (初学一级) | 2010-11-11 19:34
这个是使用IoC管理 数据访问层的,虽然是NHibernate,不过原理一样。 http://www.codeproject.com/KB/architecture/NHibernateBestPractices.aspx#BASIC_ARCH 数据访问层,用静态也好,用动态也好,并没有太大关系。就算是Instance方式,因为对象内部几乎没有成员变量(一般而言),所以Instance分配的内存只包含最基本的那几个(请参考 《.NET框架程序设计(修订版)》,另外非常强调的是,Method不是一Instance一Copy的)。 难度在于在下面做怎样管理Connection对象和事务,Web的 可以参考NH的Open Session In View模式,也包含在上面的链接。
支持(0) 反对(0) 沉默的糕点 | 园豆:1786 (小虾三级) | 2010-11-12 09:44
0

看微软的sqlhelper。。。你是说这种方法吧?

顾晓北 | 园豆:10898 (专家六级) | 2010-11-11 18:02
它好像使用的是静态的,但网上有很多的说法,我想有个大概的了解,(能赐教一下吗?)
支持(0) 反对(0) 疯一样的男人 | 园豆:9 (初学一级) | 2010-11-11 19:32
@疯一样的男人:它好像使用的是静态的,但网上有很多的说法,我想有个大概的了解,(能赐教一下吗?)
支持(0) 反对(0) 疯一样的男人 | 园豆:9 (初学一级) | 2010-11-11 19:34
这种会公用的东西应该写成静态的,这是我体会到的,你的逻辑层应该大多是实例的,这种会公用,而且基本上不会变动的东西应该是静态的。。。
支持(0) 反对(0) 顾晓北 | 园豆:10898 (专家六级) | 2010-11-12 09:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册