【问题标题】:Connection Pool vs Connection as parameter连接池与连接作为参数
【发布时间】:2016-08-04 03:04:03
【问题描述】:

我的程序使用连接作为参数。

例如,我在主类中定义了连接参数,然后当我从另一个类调用方法时,我将连接作为参数传递。如果我用连接池替换,对程序性能有什么影响吗?

【问题讨论】:

    标签: java database performance jdbc database-connection


    【解决方案1】:

    您绝对不用担心性能在这种“幼稚”的水平上。当你看到性能问题时,你只关注性能(注意:当然,你避免做完全愚蠢的事情)。当您看到真正的性能问题时,您会进行分析以了解真正的问题。

    换句话说:您应该专注于创建一个好的SOLID OO 设计。并且(尽可能在没有看到您的任何代码的情况下)从这个角度来看,您肯定会坚持传递 Connection。

    你看,你有一些“客户端”代码应该对那个连接做“某事”。因此,该客户端的责任正是:使用该连接来操作该 Connection 所连接的任何内容。 不应该负责“建立”这种联系。

    含义:一段客户端代码负责从连接池中获取一个连接;和其他一些客户端代码负责使用该连接来做任何事情。你不应该混合这两个方面。否则,您会减少选择重复使用各个功能;并且你耦合元素,那么简单的不需要耦合。

    【讨论】:

    • 传递连接通常不是一个很好的 OO 设计,因为这是您不应该暴露的那种细节(检索是使用 JDBC 连接的数据库实现的事实)一个 API。如果您需要使用原始 JDBC 连接,那么最好使用 Spring JDBC 模板之类的东西来隐藏获取和管理连接的肮脏管道细节,而不是传递 Connection 对象。 (如果事务处于活动状态,Spring 将使用 ThreadLocal 来存储 Connection)
    • 谢谢我会研究spring jdbc模板@ErwinBolwidt
    猜你喜欢
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 2015-05-02
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    相关资源
    最近更新 更多