【发布时间】:2011-04-21 05:43:26
【问题描述】:
你好 我是一名初学者 Java 开发人员,这是我发布的列表中的一个问题,因为我已经开始移植一个非常古老的 Web 服务。我正在尝试改进对 db 的访问,并且我发现很多我认为可能很危险的代码,但是我对 java 的经验不是很丰富,我不能确定。 实际上,我有一个管理数据库连接并保存对连接和语句对象的静态引用的类:它公开了一个初始化 sql 连接类成员变量的“openDb”方法。
问题1:类成员变量是静态的,如果多次调用openDb并且类的第一个(例如)实例仍在执行查询会发生什么?
上面的类公开了一个方法名“closeDb”,它释放所有资源(连接和语句都是静态成员!)和一个“closeStatement”方法,它只释放语句成员,并在外部使用。
问题2:必须在事务提交/回滚后关闭语句和结果集,还是可以立即关闭?
仍然是同一个类处理暴露一些方法的提交/回滚(将 autocommit 设置为 false、提交或回滚)。这个类的一个实例被传递给其他类实例(例如通常的员工部门类),它们在数据库上执行自己的查询,最后由连接管理器类调用提交/回滚。这种“架构”是否正确,或者您认为其中有什么危险?
提前谢谢你
【问题讨论】:
标签: java jdbc transactions