我知道如何使用 hibernate 配置 Spring。
但我的问题是 spring 和 hibernate 如何集成以及如何工作。
下面是我用来创建 Spring + Hibernate 应用程序的代码。
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.show_sql">false</prop>
</props>
</property>
</bean>
并且这个sessionFactory bean被注入(inject)到java代码中,
import org.hibernate.SessionFactory;
public class DAOSupport extends HibernateDaoSupport {
@Autowired
public void createSessionFactory(SessionFactory sessionFactory) {
setSessionFactory(sessionFactory);
}
如您所见,我创建的 session 工厂与 spring 包相关联,但在代码中它使用的是 hibernate 包。
PS:我知道 HibernateDaoSupport 已被弃用,这只是为了了解这两个框架的工作原理。
感谢 Gimby 提供的链接。 JavaDoc
最佳答案
Spring 的AnnotationSessionFactoryBean
(以及 LocalSessionFactoryBean
)实现了名为 FactoryBean
的接口(interface).它有一个特殊的方法叫做 Object getObject()
.
每当 Spring 发现您使用 FactoryBean
的实现时接口(interface),它调用Object getObject()
方法而不是创建类本身的实例。
在这种情况下,SessionFactory
方法调用将返回对象。
更具体地说,AnnotationSessionFactoryBean
工具 FactoryBean<SessionFactory>
实际上返回 SessionFactory
对象,以便可以将其注入(inject) Hibernate。
关于java - Spring如何与Hibernate集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35913323/