DD.*_*DD. 4 spring hibernate sessionfactory
如何使用java配置创建SessionFactory?
@Bean
public SessionFactory sessionFactory(){
AnnotationSessionFactoryBean sessionFactoryBean = new AnnotationSessionFactoryBean();
sessionFactoryBean.setConfigLocation(new ClassPathResource("hibernate.cfg.xml"));
return sessionFactoryBean.getObject();
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,这不起作用......它总是返回null.
Tom*_*icz 12
返回工厂:
@Bean
public AbstractSessionFactoryBean sessionFactoryBean(){
AnnotationSessionFactoryBean sessionFactoryBean = new AnnotationSessionFactoryBean();
sessionFactoryBean.setConfigLocation(new ClassPathResource("hibernate.cfg.xml"));
return sessionFactoryBean;
}
Run Code Online (Sandbox Code Playgroud)
如果需要SessionFactory
在代码中直接注入,请添加此辅助方法:
public SessionFactory sessionFactory() {
return sessionFactoryBean().getObject();
}
Run Code Online (Sandbox Code Playgroud)
请注意,帮助sessionFactory()
程序没有注释@Bean
- 这非常重要.
Tomasz是对的,但我相信使用"new"创建对象实例并不符合Spring概念:
我想你需要这样做:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>com.vanilla.objects.Student</value>
<value>com.vanilla.objects.Address</value>
</list>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
然后你可以在你的Spring bean中使用它:
@Autowired
SessionFactory sessionFactory;
Run Code Online (Sandbox Code Playgroud)
然后在你的方法内:
Session session = sessionFactory.getCurrentSession();
Run Code Online (Sandbox Code Playgroud)
值得注意的是,Spring 3.1 引入了 LocalSessionFactoryBuilder,它是专门为在 @Bean 方法中使用而设计的。
这绕过了处理 FactoryBeans、getObject() 方法等的尴尬需求。FactoryBeans 非常适合在 XML 中使用,但在 @Bean 方法中并不理想。
请注意,这个新构建器仅适用于 Hibernate 4.1+。
归档时间: |
|
查看次数: |
45549 次 |
最近记录: |