【问题标题】:Hibernate using an instance of javax.sql.DataSource使用 javax.sql.DataSource 的实例休眠
【发布时间】:2009-05-19 17:48:34
【问题描述】:

是否可以将 Hibernate 配置为使用 javax.sql.DataSource 实例?

我的应用程序已经有一个 javax.sql.DataSource 实例,我宁愿不为休眠重新配置数据库 url、用户、密码、驱动程序等。

【问题讨论】:

    标签: java sql hibernate


    【解决方案1】:

    如果数据源通过 JNDI 可用,您只需要设置配置的 hibernate.connection.datasource 属性 - mtpettyp 的回答证明了这一点。

    如果您不在数据源来自 JNDI 的环境中,请提供您自己的 ConnectionProvider 实现,并在构建会话工厂之前将其传递给 Settings 对象,或者在 hibernate.connection 中指定其类名。 provider_class 属性。如果您向 Settings 提供一个实例,您可能可以实例化标准 DatasourceConnectionProvider 并将其提供给您的 DataSource。

    【讨论】:

      【解决方案2】:

      在你的 hibernate.cfg.xml 中:

      <?xml version='1.0' encoding='UTF-8'?>
      <!DOCTYPE hibernate-configuration PUBLIC
                "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
      
      <hibernate-configuration>
          <session-factory>
              <property name="dialect">
                  org.hibernate.dialect.MySQLDialect
              </property>    
              <property name="connection.datasource">SampleDS</property>        
          </session-factory>
      
      </hibernate-configuration>
      

      【讨论】:

        【解决方案3】:

        如果您使用的是 spring 初始化和 spring 会话工厂 bean,您可以像这样简单地传入数据源

        <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
            ...
        </bean>
        

        dataSource 引用在别处定义。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-19
          • 1970-01-01
          • 2017-04-11
          • 1970-01-01
          • 2014-03-27
          相关资源
          最近更新 更多