1

我有一个 hibernate.cfg.xml 文件,但我想将它作为数据源 bean 引用。有没有办法做到这一点?我所拥有的是:

<beans:bean id="foo" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <beans:property name="configLocation" value="classpath:hibernate.cfg.xml"/>

但它不是数据源。任何帮助将不胜感激。

为了添加一些上下文,我想在我的应用程序中集成 Spring Security,提供数据库作为身份验证管理器源的方法之一如下(取自此处):

   <authentication-manager>
        <authentication-provider>
            <jdbc-user-service data-source-ref="securityDataSource"/>
        </authentication-provider>
    </authentication-manager>

其中“securityDataSource”是应用程序上下文中DataSource bean的名称,指向一个数据库。

4

3 回答 3

1

你有两个选择:

  1. 如果您不使用hibernate.cfg.xml其他任何地方,则可以完全消除它,只需使用 Spring 的配置(见下文)

  2. 如果您hibernate.cfg.xml出于某种原因需要(您在其他地方使用它),请保留该文件并添加 Spring 配置


示例配置(注意数据库访问在单独的dataSourcebean 中)

<beans:bean id="foo" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
       <property name="hibernateProperties">
            <props>
                <prop key="hibernate.hbm2ddl.auto">create-drop</prop>
                ...
        </property>
        <property name="packagesToScan">
            <list>
                <value>some.package</value>
            </list>
        </property>
    <property name="dataSource" ref="c3p0DataSource" />

<bean id="c3p0DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
    scope="singleton"
        destroy-method="close">
        <property name="driverClass">
            <value>org.postgresql.Driver</value>
        </property>
        <property name="jdbcUrl">
            <value>${jdbc.url}</value>
        </property>
        <property name="user">
            <value>${jdbc.user}</value>
        </property>
        <property name="password">
            <value>${jdbc.pw}</value>
        </property>
    </bean>

您可以在http://static.springsource.org/spring/docs/current/spring-framework-reference/html/orm.html中查看有关配置选项的更多信息

于 2012-10-12T15:41:42.450 回答
0

如果您使用的是hibernate而不是为什么使用jdbc,您可以像这样使用spring bean

<security:authentication-manager>
<security:authentication-provider ref="myAuthenticationProvider" />
</security:authentication-manager>
<bean id="myAuthenticationProvider" class="com.something.MyAuthenticationProvider"/>

其中 MyAuthenticationProvider 是实现 AuthenticationProvider 的 Spring bean。您还可以查看以下链接以获取更多帮助Link1Link2

于 2012-10-09T05:55:04.137 回答
0

您可以直接从 spring 创建,不需要 cfg.xml 文件。

dialect 50 false false false 您可以在此处配置所有 Hibernate 属性...

于 2012-10-09T11:16:36.300 回答