【发布时间】:2009-05-19 17:48:34
【问题描述】:
是否可以将 Hibernate 配置为使用 javax.sql.DataSource 实例?
我的应用程序已经有一个 javax.sql.DataSource 实例,我宁愿不为休眠重新配置数据库 url、用户、密码、驱动程序等。
【问题讨论】:
是否可以将 Hibernate 配置为使用 javax.sql.DataSource 实例?
我的应用程序已经有一个 javax.sql.DataSource 实例,我宁愿不为休眠重新配置数据库 url、用户、密码、驱动程序等。
【问题讨论】:
如果数据源通过 JNDI 可用,您只需要设置配置的 hibernate.connection.datasource 属性 - mtpettyp 的回答证明了这一点。
如果您不在数据源来自 JNDI 的环境中,请提供您自己的 ConnectionProvider 实现,并在构建会话工厂之前将其传递给 Settings 对象,或者在 hibernate.connection 中指定其类名。 provider_class 属性。如果您向 Settings 提供一个实例,您可能可以实例化标准 DatasourceConnectionProvider 并将其提供给您的 DataSource。
【讨论】:
在你的 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>
【讨论】:
如果您使用的是 spring 初始化和 spring 会话工厂 bean,您可以像这样简单地传入数据源
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
...
</bean>
dataSource 引用在别处定义。
【讨论】: