为每个数据库操作打开数据库连接并因此关闭是否是有效的方法 或者在启动时打开连接并继续为多个操作调用相同的打开连接,并在完成所有活动后关闭它。 ?
我正在创建一个Java Swing应用程序,其中我有一个主框架并使用卡布局我选择不同的面板,并且每个面板都有不同的数据库操作来执行。目前我正在为每个面板打开单独的连接,所以当我打开我的主应用程序时,多个连接被打开和关闭。
因为我想确定我做的是正确的事情,并避免任何不良做法和性能瓶颈,所以我向Java专家提出这个问题。
请建议。谢谢你的帮助。
答案 0 :(得分:6)
不,不建议为每个数据库事务“创建”新连接。创建连接通常很昂贵。尝试使用连接池来抽象连接打开和关闭语义。这样,您的应用程序可以调用Connection#close
等,并且在幕后,池将抓取并相应地返回到连接轮询的连接。那里有很多解决方案; DBCP,C3P0或BoneCP。
答案 1 :(得分:1)
如果您有连接池,您当然可以为每个操作使用连接。创建连接的成本很高,但通过汇集它们来分摊所有操作的成本使其成为可能。
您应该获得连接,使用它,并在每个操作中将其返回到池中,尽可能在最小的范围内。
答案 2 :(得分:0)
连接数据库是一项相对昂贵的操作。通常你要做的是使用连接池。连接池包含可供您使用的数据库连接集合。您可以从池中获取连接,通过该连接进行查询,然后将其返回到池中(通常通过关闭连接来完成)。连接池将负责在后台建立与数据库的新连接,这样当您需要连接时,您就不需要花时间等待连接。