2

次のように構成されている場合、Springがセッションを管理できることを理解しています。

<object name="SessionFactory"
                    type="MyApp.DAL.DAOs.SessionFactoryObject, Leverate.Crm.CrmService.DAL">
<!--My class which inherits from LocalSessionFactoryObject and defines the mapping assemblies to be used--> 

    <property name="ExposeTransactionAwareSessionFactory" value="true" />
    <property name="DbProvider" ref="DbProvider"/>
    <property name="HibernateProperties">
      <dictionary>
        <entry key="cache.use_second_level_cache" value="false"/>
        <entry key="command_timeout" value="180"/>
        <entry key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
        <entry key="dialect" value="NHibernate.Dialect.MsSql2005Dialect"/>
        <entry key="connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/>

      </dictionary>
    </property>
    <property name="SchemaUpdate" value="false"/>
  </object>

    <db:provider id="DbProvider"
                   provider="SqlServer-1.1"
                   connectionString="Data Source=local;Initial Catalog=northwind;Trusted_Connection=Yes;"/>

問題は、使用すると例外 SessionFactory.GetCurrentSession()がスローされることです。'No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here'

openSessionInViewWebコンテキストでは、 httpModule(またはそのようなもの)を使用する必要があるという回答をいくつか見ました。しかし、コンソールアプリ(またはWindowsサービス)で何をしますか?

4

1 に答える 1

3

セッション ファクトリをトランザクション対応のセッション ファクトリとして公開しています。これは、トランザクションに正しくラップされたすべてのメソッドについて、Spring によってセッションが管理されることを意味します。spring を使用してデータ アクセス メソッドをトランザクションにラップするには、宣言型 (属性駆動型)またはプログラムによるアプローチを使用できます。

于 2012-04-01T11:27:21.943 に答える