Разница между java.sql и mysql.jdbc - PullRequest
7 голосов
/ 05 апреля 2011

Я изучил Java только в последнем квартале 2010 года. Могу сказать, что знаний, которые я получил на данный момент, недостаточно, и есть много улучшений. Я все еще учусь во время разработки, но большая часть моего кода - фрагмент из другого текущего рабочего приложения. Я предполагаю, что мой способ изучения языка влияет на то, как я его знаю. Вместо того, чтобы сначала изучать основы, я перехожу к расширенным функциям, которые влияют на мое понимание. (Я продвинулся, чтобы выполнить свои предыдущие задачи проекта.)

Я часто подключаюсь к своей базе данных MySql, используя import java.sql.connection и т. Д. Я использую Eclipse IDE, когда создаю экземпляр Connection / PreparedStatement и не импортирую пакеты. Eclipse покажет связанные пакеты, где mysql.jdbc.* я встречал.

Несмотря на то, что я провел какое-то исследование об этом, для меня это не слишком ясно. Разница тех к пакетам.

  • Есть ли у нее плюсы и минусы?
  • Имеет ли это большое значение для производительности и безопасности?
  • Использует ли он по-другому?
  • Есть что еще знать?

Я знаю, что кто-то здесь может рассказать мне больше об этом.

Ответы [ 2 ]

12 голосов
/ 05 апреля 2011

Цитировать из Javadoc для com.mysql.jdbc.Connection :

Этот интерфейс содержит методы, которые считаются «расширением поставщика» для API JDBC для реализации MySQL java.sql.Connection.

Итак, этот класс по крайней мере построен на основе JDBC, чтобы добавить больше возможностей. Но это по-прежнему JDBC - вы используете этот класс, когда используете чистый JDBC, просто его не видите.

Я бы сказал, что если вы можете создать свое приложение, используя только стандартные интерфейсы JDBC, сделайте это. Если вам абсолютно необходимы специфичные для MySQL функции API, используйте интерфейсы MySQL. Я в основном работаю с Oracle, и за все годы, что я делал это, мне никогда не приходилось прибегать к каким-либо специфическим для Oracle интерфейсам; с JDBC можно сделать огромное количество.

Для адресации ваших очков:

  • Профи больше возможностей; минус стандартизация
  • Я бы не ожидал никакой разницы с производительностью и безопасностью, поскольку два пакета используют одни и те же классы под капотом (AIUI)
  • Использование не должно быть принципиально другим; пакет MySQL должен добавить к пакету JDBC
  • В пакете MySQL есть еще что-то, что нужно знать о JDBC, чтобы все равно его использовать
5 голосов
/ 05 апреля 2011

Проще говоря: Java (J2SE / J2EE) предоставляет java.sql. * В качестве стандартного способа подключения к базе данных. Проблема в том, что эти классы не знают, как на самом деле умеют подключаться к каждой конкретной базе данных в модели, они ориентированы на программиста.

Чтобы подключиться к каждой базе данных, вам необходимо вставить ее драйвер. Драйвер Oracle будет знать, как подключиться к базе данных Oracle, драйвер mysql будет знать, как подключиться к MySQL. java.sql. будет знать, как использовать каждый драйвер, поэтому, просто используя его, вам не нужно знать внутреннее устройство каждого драйвера.

...