如何将hibernate.cfg.xml创建到数据源bean

时间:2012-10-07 02:35:51

标签: hibernate

我有一个hibernate.cfg.xml文件,但我想将它作为dataSource bean引用。有没有办法做到这一点?我只有:

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

但它不是dataSource。任何帮助将不胜感激。

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

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

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

3 个答案:

答案 0 :(得分:1)

您有两种选择:

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

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


  3. 示例配置(通知数据库访问位于单独的dataSource bean中)

    <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

    中查看有关配置选项的更多信息

答案 1 :(得分: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

答案 2 :(得分:0)

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

                                                                                          方言                 50                 假                 假                 假                           您可以在此处配置所有Hibernate属性...