我有一个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的名称。
答案 0 :(得分:1)
您有两种选择:
如果你没有在其他任何地方使用hibernate.cfg.xml
,你可以完全消除它,只使用Spring的配置(见下文)
如果由于某种原因需要hibernate.cfg.xml
(您在其他地方使用它),请保留该文件并添加Spring配置
示例配置(通知数据库访问位于单独的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。 您还可以查看以下链接以获取更多帮助Link1和Link2
答案 2 :(得分:0)
您可以直接从spring创建,无需cfg.xml文件。
方言 50 假 假 假 您可以在此处配置所有Hibernate属性...