我可以/应该将 Connection 对象传递给函数吗?
Posted
技术标签:
【中文标题】我可以/应该将 Connection 对象传递给函数吗?【英文标题】:Can/Should I pass a Connection object to functions? 【发布时间】:2015-10-29 00:21:24 【问题描述】:我对 DBMS 非常熟悉,我需要使用 JDBC 编写一个 Java 程序来与 Access 数据库文件进行交互。我想知道在 main 中初始化 Connection 并根据需要将其传递给每个方法(在程序运行后关闭它)或在每个单独的方法中打开和关闭一个新连接是否更好,甚至可能。
抱歉,如果这是重复的,但我发现的关于此的问题/答案都不是结论性的。
【问题讨论】:
【参考方案1】:打开连接需要很长时间。如果没有特殊原因关闭它,您应该在您的程序中使用相同的连接。
甚至还有一种称为connection pooling 的特殊技术,它允许在大型应用程序中重用打开的连接,从而提高性能。
【讨论】:
好吧,我对数据库访问了解不多,所以我不知道“特殊原因”可能是什么样的。 特殊原因可能是连接错误或数据库关闭等。 知道了,我想我只会在 main 中打开和关闭一次,因为这个程序永远不会在野外使用。非常感谢【参考方案2】:我认为创建单个连接对象是最好的方法,因为您可以减少 JVM 创建和垃圾收集对象的开销。 (使用try-with-resource。它会自动关闭连接对象)
【讨论】:
以上是关于我可以/应该将 Connection 对象传递给函数吗?的主要内容,如果未能解决你的问题,请参考以下文章