在JSP中的JavaBean设置静态属性和方法有没有意义?

02-11-06 zingers
在BS结构应用开发中,我们都会碰到联接数据库的问题。一般的作法是把

数据库联接放在一个对象中(封装)。

比如这个类名叫DbConn,它有一个最重要的方法

public Connection getConn(),

还有一些属性描述了JDBC数据库联接,

比如String jndiName,String jdbcDriver,String jdbcURL,

String user,String password,

相信大家都可以轻松理解。

现在在每个页面里生成DbConn的实例,对象名为objConn,然后

调用它的getConn实例方法,以此操作数据库。

我现在的想法是把getConn改成public static Connection getConn();

这样在页面中就无需生成对象。好象很合理。但我又想到,每次HTTP请求都要load一次DbConn类,getConn()是不是静态的好象对性能没有什么提高。而且每次请求不会利用原有DbConn,不会产生单子模式的应用。

不知道大家对这个问题是怎么看的,我的初步结论是这个改动似乎是无关

紧要的。

zingers
2002-11-06 20:00
我现在想了一下,还是有意义的。

假设虚拟机load一个CLASS所占用的内存等于实例化一个Object所需要的内存,采用static 方法和属性会节省一半的内存。如果访问量大的话,这是

很可观的。

cc
2002-11-09 16:18
你看看jive就是用的public static Connection getConn();

banq
2002-11-10 01:04
但是访问量大时,就只能通过一个连接去连接数据库,你想想是多么可怕的事情?

连接池是必须的。

iceant
2002-11-10 01:52
怎么可能只有一个连接?

只不过方法是 static 的,并不表示 Connection 只有一个啊

lsj
2002-11-10 22:22
> 但是访问量大时,就只能通过一个连接去连接数据库

是否与静态方法只能访问静态变量有关?

zingers
2002-11-12 13:08
static method

singleton model

memory pool

这三个概念是独立的,但是他们的组合会产生不同的效果。

在数据库连接这个主题上,

只要用1,3就可以了。

2可以不用。

我觉得iceant is right.

lingkey
2007-07-22 11:19
mark

猜你喜欢