3

プロジェクトで初めて Hibernate (4.2.3) を使用しています。h2-1.3.173.jarH2組み込み(ローカル)DBに接続し、クラスパスとすべてのHibernate JARに接続しようとしています。ログ出力に Hibernate から不穏なエラー メッセージが表示されるので、Hibernate を正しく構成していないのではないかと思います。ログに表示される出力は次のとおりです。

604 [main] INFO org.hibernate.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {4.0.2.Final}
707 [main] INFO org.hibernate.Version - HHH000412: Hibernate Core {4.2.3.Final}
769 [main] INFO org.hibernate.cfg.Environment - HHH000206: hibernate.properties not found
771 [main] INFO org.hibernate.cfg.Environment - HHH000021: Bytecode provider name : javassist
2192 [main] INFO org.hibernate.cfg.Configuration - HHH000043: Configuring from resource: hibernate.cfg.xml
2192 [main] INFO org.hibernate.cfg.Configuration - HHH000040: Configuration resource: hibernate.cfg.xml
2835 [main] INFO org.hibernate.cfg.Configuration - HHH000041: Configured SessionFactory: null
3313 [main] INFO org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000402: Using Hibernate built-in connection pool (not for production use!)
3313 [main] WARN org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000148: No JDBC Driver class was specified by property hibernate.connection.driver_class
3313 [main] INFO org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000115: Hibernate connection pool size: 1
3313 [main] INFO org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000006: Autocommit mode: false

そして、ここに私のhibernate.cfg.xmlファイルがあります:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- DataSource & Connection info. -->
        <property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
        <property name="hibernate.connection.driver.class">org.h2.Driver</property>
        <property name="hibernate.connection.url">jdbc:h2:file:/${MYAPP_HOME}/data/myapp_db</property>
        <property name="hibernate.connection.username">myapp</property>
        <property name="hibernate.connection.password">12345</property>
        <property name="hibernate.connection.pool_size">1</property>

        <!-- General Hibernate settings. -->
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="use_sql_comments">true</property>

        <!-- DDL Mode. -->
        <property name="hbm2ddl.auto">validate</property>

        <!-- 2nd Level Cache. -->
        <property name="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</property>

        <!-- All our Hibernate mapping XML files. -->
        <mapping class="net.myapp.common.dto.WordDTO" />
    </session-factory>
</hibernate-configuration>

ログ出力から、私はいくつかのことを心配しています:

  1. 構成された SessionFactory: null
  2. Hibernate 組み込みの接続プールを使用する (本番用ではありません!)
  3. プロパティ hibernate.connection.driver_class で指定された JDBC ドライバー クラスがありませんでした
  4. 自動コミット モード: false

接続プールのサイズが 1 であること確認できますが、これが Hibernate がhibernate.cfg.xmlファイルを検索/解析できない場合に使用するデフォルト値であることが心配です。SessionFactory が null になるのはなぜですか? Hibernate が独自の組み込み接続プールを使用するのはなぜですか? h2-1.3.173.jarJDBC ドライバー クラスがクラス パス上にあるのに、なぜそれが見つからないのですか? 「自動コミットモード」とは何ですか?なぜそれが間違っているのですか?

前もって感謝します!

4

1 に答える 1

9

1) null は、セッション ファクトリの名前です。名前を付ける必要はありません。

2) c3p0 のようなものを使いたくなるでしょう。https://community.jboss.org/wiki/HowToConfigureTheC3P0ConnectionPoolをご覧ください。これらの設定を行うと、c3p0 がオンになります。

3)設定driver.classしていますが、driver_class

4) Autocommit false は、トランザクションを手動でコミットする必要があることを意味します。これが通常のパターンです。

于 2013-10-11T21:21:35.130 に答える