【问题标题】:Passing hibernate.connection.datasource from Spring's applicationContext xml从 Spring 的 applicationContext xml 传递 hibernate.connection.datasource
【发布时间】:2012-06-04 04:02:41
【问题描述】:

之前我在应用程序服务器本身中配置了数据源,并将其传递给应用程序级别的 hbr.xml 文件

<property name="hibernate.connection.datasource">java:comp/env/jdbc/myDataSource</property>

现在我已将 applicationContext.xml 中的数据源配置为

<bean id="mydatasource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
            <property name="url"
                value="jdbc:sqlserver://localhost:1433;databaseName=mydatasource;maxPoolSize=100" />
            <property name="username" value="sa" />
            <property name="password" value="${database.password}"/>

    </bean>

如何将其传递给 hbr.xml 文件? 基于下面给出的我的另一个问题是我的会话工厂应该是什么类?应该是org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean

org.springframework.orm.hibernate3.LocalSessionFactoryBean

【问题讨论】:

    标签: java spring hibernate spring-jdbc


    【解决方案1】:

    将数据源与休眠映射一起注入您的 DAO:

    <bean id="mydatasource" ...>
      ...
    </bean>
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
      <property name="dataSource" ref="mydatasource" />
      <property name="mappingResources">
        <list>
          <value>path/to/your/mappings.hbm.xml</value>
        </list>
      </property>
      <property name="hibernateProperties">
        <props><!-- see http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/session-configuration.html -->
          <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
          ....
        </props>
      </property>
      ...
    </bean>
    

    使用注解,您可以通过注入的 bean 访问您的数据源

    @Resource
    private SessionFactory sessionFactory;
    ...
    Session session = this.sessionFactory.getCurrentSession();
    

    【讨论】:

    • 我有 100 多个 DAO。我必须全部更改吗?
    • 不知道你的 DAO 实现我只能猜测。但也许使用通用 DAO 可以显着减少该数量。您可以在此条目下找到一个这样的实现(尽管存在许多关于此主题的其他帖子):stackoverflow.com/questions/9721383/hibernate-crud-generic-dao
    猜你喜欢
    • 2014-11-20
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2012-05-18
    相关资源
    最近更新 更多