В контексте создания подключения к базе данных мы обычно импортируем требуемые пакеты и используем Class.forName() для загрузки классов драйвера классом-загрузчиком вызывающего класса.Class.forName (Driver.class)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
....
....
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection(...);
Мы не могу просто упасть Class.forName(), как в этом: -
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import com.mysql.jdbc.*;
....
....
Connection con=DriverManager.getConnection(...);
Мой вопрос, когда зависимости класса загружается тем же загрузчик классов, который загрузил зависимый class, тем же механизмом, который используется с классом.forName (className) неявно, почему нужно явно указывать Class.forName(). Просто включите класс драйвера в оператор импорта. Не будет ли загрузочный класс автоматически загружаться, когда он приведет к строке DriverManager.getConnection()? com.mysql.jdbc находится в инструкции import. Или мне нужно добавить строку, как Аль
Class clazz=com.mysq.jdbc.Driver.class
, чтобы вызвать Class.forName().
Так как же такая строка, как «Класс > манекен», помогает в загрузке класса? Вызывается ли вызов класса.forName() неявным образом? Кто звонит? Или строка просто заменяется классом.forName (com.mysql.jdbc.Driver.class), в соответствии с которым это больше не будет временем слияния времени компиляции? – prvn
Если вы обратитесь к классу, он будет загружен. В случае с драйвером JDBC это все, что вам нужно сделать, чтобы зарегистрировать его с помощью диспетчера драйверов. Когда вы ссылаетесь на класс в коде (например, 'new Arraylist()' или 'com.mysql.jdbc.Driver.class'), JVM автоматически загрузит класс первым (если это еще не сделано). –
Thilo