我的dbConnection该什么时候释放??:)

03-11-27 java_jar
在作一个查询时,想当然的通过JSP将查询条件送给SERVLET,servlet调用相应的查询方法(当然这其中还有些细节,象封装查询方法、数据访问层封装啊等,由于与本主题无关这里就不再细说了)。查询方法返回一个ResultSet给Servlet或JSP,因为要将符合查询条件的结果记录集显示出来嘛!这时突然想到一个问题:如果要释放这个为查询创建的connection的话,由于ResultSet需要这个connection,无法找到一个合适的时机将Connection释放。我该在什么时候释放这个DBConnection呢?谢谢!

crogers
2003-11-27 16:14
不要用resultset

java_jar
2003-11-27 17:33
不用ResultSet!?这个也想过,但是如果要获得是一个有10列的数据集用什么呢?总不能用数组吧?

xfzhu2003
2003-11-27 18:23
全释放了重新查

crogers
2003-11-27 20:21
> 不用ResultSet!?这个也想过,但是如果要获得是一个有10?> 的数据集用什么呢?总不能用数组吧?

呵呵,你先说为什么不能用数组?

java_jar
2003-11-28 09:37
呵呵,我在写了上面“不能用数组”这句话之后就发现思路太封闭了。后来想想可以将需要得到的数据集的行封装成DTO(当然如果行信息是直接反映某个实体的,那就直接是实体类就可以了),然后在获得ResultSet后转成DTO(或试题类)对象的数组(或者MAP什么的,这个应该不重要)。然后释放ResultSet,Connection等资源,返回给UI这个数组(MAP)即可。

这是从大家的回答得到一点想法,请指正。

agilejava
2003-11-28 09:53
我们就用ArrayList来保存取得的数据的

crogers
2003-11-28 10:14
> 呵呵,我在写了上面“不能用数组”这句话之后就发现思路太
> 獗樟恕:罄聪胂肟梢越枰玫降氖菁男蟹庾俺DTO(当
> 蝗绻行畔⑹侵苯臃从衬掣鍪堤宓模蔷椭苯邮鞘堤謇嗑涂梢
> 了),然后在获得ResultSet后转成DTO(或试题类)对象的数组
> 蛘MAP什么的,这个应该不重要)。然后释放ResultSet,Co
> nection等资源,返回给UI这个数组(MAP)即可。
>
> 这是从大家的回答得到一点想法,请指正。

正解,呵呵

anonymous
2003-11-28 10:27
connection 放在 threadlocal中可以解决这个问题。
记得在filter中释放了即可

java_jar
2003-12-03 09:47
谢谢各位,我明白该怎么作了。