2012-04-18 29 views
1

恐怖を受けています。Hibernateを使用しているときに適切なドライバが見つかりませんでした。私はできるだけドライバーの瓶がクラスパスにあると確信しています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> 

はJARがCLASSPATHにあるようですねあなた

+1

この場合、クラスの読み込みに関する問題が発生している可能性があります。 jdbcドライバjarは、休止状態と比較してどこに配置されていますか? – Jeroen

+0

すべての私のjarファイルは 'WEB-INF/lib'にあります。セッションファクトリを設定する前に 'Class.forName(" com.mysql.jdbc.Driver ");を呼び出すだけで、データベースが照会できるようになり、データが返されます。私のソリューションが安定していて、安全であるかどうかは不思議です... – WakaJawaka

答えて

1

ありがとうございます。そうでない場合は、NoClassDefFound例外が発生します。

通常、適切なドライバがないということは、特定のドライバで接続URLの構文が正しくないことを意味します。

MySQLが必要です"jdbc:mysql://server:3306/database" - あなたは正しいようです。

ローカルホストを解決できない場合は、問題が発生します。おそらく127.0.0.1がうまくいくでしょう。

MySQLはポート3306でリッスンしていますか?

接続を求められたデータベースは存在しますか? MySQLクライアント経由でログインし、テーブルとデータを参照できますか?

+0

ドライバは、指定されたホストまたはポートが利用できない場合でも、正しい形式のURL(つまり、特定のドライバ用に設定されたURL構文を守ってください)接続します。 DriverManagerは2つのステップで接続を確立します。最初に、使用可能なすべてのドライバに対して、指定されたURLを受け入れるかどうかを尋ねるメッセージを繰り返し、それを受け入れる最初のドライバが実際に接続を確立するために使用されます。ドライバのURLを受け入れなかった場合、最初の部分に質問のエラーが表示されます。 –

+0

このエラーが発生したときはいつでも、使用していたドライバの構文エラーが発生していました。正しいMySQL URL構文を与え、Oracle JDBCドライバのJARまたは誤ったOracle URL構文を使用した場合、私はそれを見るでしょう。そういう意味であれば、私たちは同意します。 – duffymo

+0

これは、あなたがホストとポートを解決することについて話しているように、私が言ったことです。それは運転手がURLを受け入れた後でなければ再生されません。 –

関連する問題