【问题标题】:What is faster: JDBC or JNDI?哪个更快:JDBC 还是 JNDI?
【发布时间】:2012-07-15 01:28:39
【问题描述】:

我有两个选项来配置我的应用程序数据库连接 - 一个是使用 JDBC,另一个是使用 JNDI。就这些连接类型与数据库的工作速度而言,最佳选择是什么。

我理解这是使用不同原理的两种不同类型的数据库连接(JDBC 是直接 db 连接,JNDI 是应用服务器端的数据库连接池配置)。但是还有其他一般的 JDBC/JNDI 优缺点可能比运行速度更重要吗?如果是,它们是什么?

【问题讨论】:

  • JNDI 是指在服务器上定义数据源?
  • @ftom2: 是的,这就是我的意思——在应用服务器上配置 JNDI 数据源
  • JNDI和JDBC在性能上没有任何关系,因为JNDI返回了一些帮助应用开发者或应用服务器使用JDBC获取数据库连接的属性;用于数据库连接的低级 API。

标签: java mysql database jdbc jndi


【解决方案1】:

我敢打赌你的意思是选择

  1. 在您的应用程序中手动创建数据源或 jdbc 连接,或者
  2. 在容器中设置数据源,应用通过JNDI查找数据源

如果是这种情况,请尽可能坚持使用 2。

选择的主要原因绝不是性能差异。坚持 2 的原因,大部分情况下,你需要 2 才能从容器中获得更高级的特性,例如分布式事务。

【讨论】:

    【解决方案2】:

    这是我发现的关于 JNDI 和 JDBC 的内容。

    JNDI: 这是一种类似于电话簿的技术,用于远程搜索服务器和数据源上的名称。

    JNDI 创建一个连接池。连接池是服务器上的一个环境,其中 JNDI 和数据库封装到其中以实现 Type4 连接。

    JDBC: 一种 Java API,使 Java 程序能够执行 SQL 语句。 这允许 Java 程序与任何符合 SQL 的数据库进行交互。

    JDBC 与 ODBC 类似,但专为 Java 程序设计,而 ODBC 与语言无关。

    JDBC 由 Sun Microsystems 开发。 JNDI 更快更高效。

    【讨论】:

    • 再次;我已多次通知您在链接到您自己的网站时需要披露,但您一再未能这样做。
    【解决方案3】:

    这个问题毫无意义。在什么方面更快?没有什么可以比较的。 JDBC 是关系数据库的通用接口。 JNDI 是命名系统的通用接口。很大概率是任何一个的效率都取决于与之通信的目标系统的 99%。在任何情况下,关系数据库和命名系统都满足完全不同的需求,这些需求在很大程度上是不可比的。通常使用 JNDI 来获取连接,然后使用 JDBC 来操作该连接。

    【讨论】:

      【解决方案4】:

      是否使用连接池不影响应用程序代码。它不需要对应用程序进行任何代码更改,因为应用程序会查找先前注册的数据源的 JNDI 名称。如果数据源在 JNDI 注册期间指定了连接池实现(如 Creating a Data Source Using the DataDirect Connection Pool Manager 部分所述),则客户端应用程序可以通过连接池获得更快的连接。

      【讨论】:

        【解决方案5】:

        前面的回答提到过,从技术上来说,使用Datasource和使用JDBC是一样的。

        尽管如此,使用数据源通常是首选方式,因为这样您就可以让服务器管理您的数据库连接池。

        【讨论】:

          【解决方案6】:

          真正的速度优势来自于能够重用数据库连接。

          因此,您需要使用提供数据库连接池的方法,然后使用适当的技术进入池。根据实现,它可以是 JDBC(如果驱动程序本身支持的话)或 JNDI 或完全不同的东西。

          如果您的应用程序在 Web 容器中运行,通常使用 JNDI 来允许在 Web 容器中而不是在您的应用程序中配置和管理池。

          【讨论】:

            【解决方案7】:

            这个问题并不完全清楚。

            JNDI 不是一种数据库连接。您可以使用 JNDI 查找 DataSource,它是连接工厂。不过,DataSource 是 JDBC API 的一部分,因此 JNDI 与 JDBC 一起工作,而不是这里的替代品。

            您是在谈论针对数据库使用 JDBC 来获取目录信息,还是针对 LDAP 存储库使用 JNDI?

            【讨论】:

              【解决方案8】:

              数据库连接总是使用 JDBC。使用 JNDI,您可以在目录服务中注册一个数据源,该目录服务可以通过其名称进行查找。因此 JDBC 和 JNDI 完全不同,不可互换。

              【讨论】:

                猜你喜欢
                • 2014-05-16
                • 2011-03-26
                • 2012-06-12
                • 2010-09-29
                • 2011-03-14
                • 2011-09-22
                • 2018-10-31
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多