2015-10-23 3 views
-2

Я сделал основной copy-paste кода для подключения к серверу оракула здесь на работе:Class.forName (DriverName) при подключении к базе данных Oracle в Java

import java.sql.Connection; 
import java.sql.DriverManager; 

public class OracleClass { 
    protected String driverName = "oracle.jdbc.driver.OracleDriver"; 
    protected Connection dbConnection; 
    protected String username = "someUsername"; 
    protected String password = "somePassword"; 
    protected String server = "MYSERVER"; 
    protected String port = "1521"; 
    protected String sid = "MYSID"; 

    public OracleClass() { 
     String url = "jdbc:oracle:thin:@" + server + ":" + port + ":" + sid; 
     Class.forName(driverName); // What does this do??? 
     dbConn = DriverManager.getConnection(url, username, password); 
    } 

    /** 
    * Other methods 
    */ 
} 

Это работает, соединяет, и я могу запросить базу данных и получить из нее ResultSet, но что делает линия Class.forName(DriverName)? Он должен возвращать статический класс, но я не назначаю его ни к чему (что, я думаю, мне нужно сделать). Похоже, он просто ничего не делает.

Что делать? Это необходимо?

+3

С любым современным драйвером 'Class.forName (DriverName)' больше не нужно –

+0

** Пожалуйста, найдите перед публикацией. Простой «то, что делает Class.forName на сайте: stackoverflow.com», дает вам несколько ответов на ** именно этот вопрос. –

+0

Если это дубликат, то где вопрос, который задает вопрос, и ему ответили, что это линия, которая больше не нужна, пожалуйста? Я не нашел этого, и я искал (см. Ссылку) и не нашел ответа о том, почему это необходимо или что он делает. –

ответ

2

Из документации:

Возвращает объект класса, связанный с классом или интерфейсом с заданным именем строки. Вызов этого метода эквивалентен: Class.forName (className, true, currentLoader) где currentLoader обозначает загрузчик определяющего класса текущего класса.

Это, по сути, старая идиома в шаблоне Java SQL, чтобы гарантировать, что класс драйвера можно загрузить и загрузить до использования драйвера.

+0

Фактически это использовалось, потому что в классах JDBC были созданы статические блоки, которые были выполнены и заполнены различными свойствами, чтобы можно было использовать этот драйвер. –

+1

@Aron_dc да, это суть. При загрузке класса статические инициализаторы выполняются, что необходимо было обеспечить до использования драйвера. – Mena

Смежные вопросы