Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.sql与mysql.jdbc_Java_Mysql_Jdbc - Fatal编程技术网

java.sql与mysql.jdbc

java.sql与mysql.jdbc,java,mysql,jdbc,Java,Mysql,Jdbc,在开发连接到数据库的java应用程序时,我们似乎有两种选择: 使用标准的java.sql类 使用特定于供应商的类(比如我们有com.mysql.jdbc.Connection和java.sql.Connection) 建议使用哪一种?假设我目前正在使用mysql。但将来我可能会转向甲骨文。使用特定于供应商的实现是否会提高性能?永远不要使用特定于供应商的代码,始终使用标准api(JDBC),以后它将易于维护,并且易于跨数据库移植。供应商特定代码的性能优势可以忽略不计,您可以更好地处理优化的查询

在开发连接到数据库的java应用程序时,我们似乎有两种选择:

  • 使用标准的
    java.sql
  • 使用特定于供应商的类(比如我们有
    com.mysql.jdbc.Connection
    java.sql.Connection

建议使用哪一种?假设我目前正在使用mysql。但将来我可能会转向甲骨文。使用特定于供应商的实现是否会提高性能?

永远不要使用特定于供应商的代码,始终使用标准api(JDBC),以后它将易于维护,并且易于跨数据库移植。供应商特定代码的性能优势可以忽略不计,您可以更好地处理优化的查询、索引、缓存等。

永远不要使用供应商特定代码,始终使用标准api(JDBC),以后它将易于维护,也易于跨数据库移植。供应商特定代码的性能优势可以忽略不计,您可以更好地使用优化的查询、索引、缓存等。

在大多数情况下,您不会注意到性能差异

java.sql包代表了不同数据库之间最常见的分母,而特定于供应商的包还公开了一些数据库后端独有的功能。但是,当您希望在以后打开切换数据库后端的选项时,无论如何都应该避免这些操作,因为新数据库可能没有等效的功能,您需要以完全不同的方式解决问题,这最终可能需要对整个应用程序进行一些大规模重构

tl;dr:当您想打开切换到Oracle或任何其他SQL数据库的选项时,请使用java.SQL


甚至更好:使用对象关系映射框架(如Hibernate)为您进行数据库抽象。他们需要一段时间来适应,但之后您将能够以更少的工时实现数据库功能,切换数据库后端将是配置文件中的一行更改。

在大多数情况下,您不会注意到性能差异

java.sql包代表了不同数据库之间最常见的分母,而特定于供应商的包还公开了一些数据库后端独有的功能。但是,当您希望在以后打开切换数据库后端的选项时,无论如何都应该避免这些操作,因为新数据库可能没有等效的功能,您需要以完全不同的方式解决问题,这最终可能需要对整个应用程序进行一些大规模重构

tl;dr:当您想打开切换到Oracle或任何其他SQL数据库的选项时,请使用java.SQL


甚至更好:使用对象关系映射框架(如Hibernate)为您进行数据库抽象。他们需要一段时间来适应,但之后您将能够以更少的工时实现数据库功能,切换数据库后端将是配置文件中的一行更改。

对于JDBC,您总是“使用”供应商实现,因为JDBC只是一组接口。也就是说:通常只使用
java.sql
javax.sql
中定义的接口以获得最佳可移植性。对于JDBC,您总是“使用”供应商实现,因为JDBC只是一组接口。也就是说:一般来说,为了实现最佳的可移植性,只使用
java.sql
javax.sql
中定义的接口。我同意。我参加过一些项目,其中团队假设只使用数据库x。后来,添加了另一个数据库y,开发人员必须删除所有数据库x代码或为数据库y编写另一个接口。我同意。我参加过一些项目,其中团队假设只使用数据库x。稍后,将添加另一个数据库y,开发人员必须删除所有数据库x代码或为数据库y编写另一个接口。