6

WebアプリケーションにSpring3.1.2とHibernate4.1.7を使用しています。これらの両方を構成したいと思います。私は自分のhibernate.cfg.xmlファイルを持っています:

<hibernate-configuration>
    <session-factory>
        <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.pool_size">10</property>
        <property name="hibernate.connection.autocommit">false</property>
        <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
        <!-- 
        <property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
         -->
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.hbm2ddl.auto">update</property>       
    </session-factory>
</hibernate-configuration>

私のwebapp-servlet.xml春の設定ファイル:

<beans>
<bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="configLocation">
        <value>
            classpath:hibernate.cfg.xml
        </value>
    </property>
    <property name = "dataSource" ref = "dataSource"></property>
</bean>

<bean id = "dataSource" class = "org.apache.commons.dbcp.BasicDataSource">
    <property name = "driverClassName" value = "com.mysql.jdbc.Driver" />
    <property name = "url" value = "jdbc:mysql://localhost:3306/test" />
    <property name = "username" value = "root" />
    <property name = "password" value = "root" />
    <property name = "maxActive" value = "10" />
</bean>
</beans>
  1. 必要なすべてのデータがHibernate構成ファイルにすでに含まれているのに、なぜDataSource Beanを構成する必要があるのですか?Hibernateには使用できるデフォルトがありますか?
  2. DataSourceに使用できるものは何ですか?
  3. アプリケーションで休止状態を機能させるための他のBeanまたは構成パラメーター/プロパティが不足していますか?
4

1 に答える 1

8
  1. 両方は必要ありません。hibernate.cfg.xmlですべてを削除して構成するかLocalSessionFactoryBean、既存のものをそのまま再利用できますhibernate.cfg.xml(この場合DataSource、Spring構成で構成する必要はありません)。

  2. 次のオプションがあります。

  3. 現在の構成で十分ですが、Springトランザクション管理のサポートが不足しています。それを有効にするには、次のことを行う必要があります

    • 宣言するHibernateTransactionManager

    • <tx:annotation-driven>宣言型トランザクション管理を有効にするために追加します( @Transactional

    • TransactionTemplateプログラムによるトランザクション管理を使用するかどうかを宣言します(宣言型トランザクション管理の制限を克服するために使用します)

    • また、Springトランザクション管理と競合する可能性があるため、Hibernate構成からトランザクション関連のプロパティを削除することを忘れないでください

于 2012-11-30T22:00:20.453 に答える