Java 什么更快:JDBC还是JNDI?

Java 什么更快:JDBC还是JNDI?,java,mysql,database,jdbc,jndi,Java,Mysql,Database,Jdbc,Jndi,我有两个选项来配置我的应用程序数据库连接——一个是使用JDBC,另一个是使用JNDI。就这些连接类型在数据库中的工作速度而言,什么是最好的选择 我知道这是两种使用不同原理的不同类型的数据库连接(JDBC是直接db连接,JNDI是应用服务器端的数据库连接池配置)。但是,还有其他比操作速度更重要的JDBC/JNDI优点和缺点吗?如果是,它们是什么?数据库连接总是使用JDBC。使用JNDI,您可以在目录服务中注册一个数据源,该目录服务可以通过其名称进行查询。因此,JDBC和JNDI完全不同,不能互换。

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


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

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

在这个问题上还不完全清楚

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


您是在谈论对目录信息数据库使用JDBC,还是对LDAP repo使用JNDI?

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

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


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

如前面的回答所述,使用Datasource在技术上与使用JDBC相同


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

是否使用连接池不会影响应用程序代码。它不需要对应用程序进行任何代码更改,因为应用程序对以前注册的数据源的JNDI名称执行查找。如果数据源在JNDI注册期间指定了一个连接池实现(如第节所述),那么客户端应用程序将受益于通过连接池实现更快的连接。

我打赌您的意思是从

  • 在应用程序中手动创建数据源或jdbc连接,或
  • 在容器中设置数据源,应用程序通过JNDI查找数据源
  • 如果是这种情况,如果可能,请始终坚持使用2


    选择的主要原因从来不是性能差异。坚持使用2的原因是,在大多数情况下,您需要2从容器中获得更高级的功能,例如分布式事务。

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

    这就是我对JNDI和JDBC的了解

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

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

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

    JDBC类似于ODBC,但专门为Java程序设计,而ODBC是独立于语言的


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

    JNDI的意思是在服务器上定义数据源?@ftom2:是的,这就是我的意思-在应用服务器上配置JNDI数据源JNDI和JDBC在性能方面没有任何关系,因为JNDI返回一些属性,帮助应用程序开发人员或应用程序服务器使用JDBC获得数据库连接;用于数据库连接的低级API;我已经多次通知您在链接到您自己的网站时需要披露的要求,但您一再未能这样做。