2012-04-18 3 views
1

Я получаю страшный Неисправен драйвер, обнаруженный при использовании Hibernate. Я почти уверен, что jar драйвера находится в classpath, как я могу сделать Class.forName("com.mysql.jdbc.Driver"). На самом деле, пока я просто позвоню, прежде чем строить заводскую сессию, и мой код работает. Но разве это «безопасно»? Почему это происходит? Вот мой конфиг:Hibernate jdbc не найден подходящий драйвер

<session-factory> 
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property> 

    <property name="hibernate.connection.username">root</property> 
    <property name="hibernate.connection.password">password</property> 

    <property name="connection.pool_size">1</property> 

    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 

    <property name="show_sql">true</property> 
    <property name="format_sql">true</property> 
    <property name="use_sql_comments">false</property> 

    <mapping resource="User.hbm.xml" /> 
</session-factory> 

Спасибо

+1

Если это так, вы можете столкнуться с проблемами загрузки классов. Где находится jdbc-драйвер, расположенный по сравнению с спящим? – Jeroen

+0

Все мои баночки расположены в 'WEB-INF/lib'. Это очень странно, как я уже сказал, я просто называю Class.forName («com.mysql.jdbc.Driver»); 'перед настройкой фабрики сеансов и все работает, я могу запросить мою базу данных, и данные будут возвращены. Мне просто интересно, стабильное и безопасное решение ... – WakaJawaka

ответ

1

Это звучит как JAR находится в CLASSPATH. Вы получите исключение NoClassDefFound, если это не так.

Подходящий драйвер обычно не означает, что синтаксис URL-адреса соединения не подходит для данного драйвера.

MySQL необходим "jdbc:mysql://server:3306/database" - ваш выглядит правильно.

Если он не может решить localhost, у вас возникнут проблемы. Возможно, 127.0.0.1 будет работать лучше.

Является ли MySQL прослушиванием порта 3306?

Имеется ли в базе данных, к которой вы хотите подключиться? Можете ли вы войти через клиент MySQL и посмотреть таблицы и данные?

+0

Драйвер должен принимать любой корректный URL (т. Е. Придерживаться синтаксиса URL-адреса, установленного для этого конкретного драйвера), даже если указанный хост или порт недоступны для подключения. DriverManager устанавливает соединение в два этапа: сначала он запускается по всем доступным драйверам, спрашивая их, будут ли они принимать указанный URL-адрес, первый драйвер, чтобы принять его, будет использоваться для фактического установления соединения. Ошибка в вопросе возникает в первой части, если драйвер не принял URL. –

+0

Всякий раз, когда я получил эту ошибку, это означало, что у меня была синтаксическая ошибка для драйвера, который я использовал. Поэтому я видел бы это, если бы я дал правильный синтаксис URL-адреса MySQL и использовал JAR-драйвер JAR JAR или неправильный синтаксис Oracle URL. Если это так, то мы согласны. – duffymo

+0

Это то, что я имел в виду, поскольку вы говорите о разрешении хостов и портов. Это не вступает в игру до тех пор, пока драйвер не примет URL. –

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