private HibernateTemplate hibernateTemplate;
public void setSessionFactory(SessionFactory sessionFactory) {
this.hibernateTemplate = new HibernateTemplate(sessionFactory);
}
什么是SessionFactory类? 我们为什么用它? 什么是hibernateTemplate类用于?
<bean id="myUserDAO" class="com.mysticcoders.mysticpaste.services.ContactSerImpl">
<property name="sessionFactory" ref="mySessionFactory"/>
</bean>
<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="myDataSource" />
<property name="annotatedClasses">
<list>
<value>com.mysticcoders.mysticpaste.model.Contact</value>
</list>
</property>
<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">create</prop>
</props>
</property>
</bean>
这在bean中做什么
答案 0 :(得分:8)
应用程序从Session Factory获取会话实例。
SessionFactory
主要在应用程序中配置为Singleton
,
如果您使用的是Spring,它将在应用程序上下文中配置为singleton。
SessionFactory
缓存生成SQL语句和其他
映射Hibernate在运行时使用的元数据。
已在一个工作单元中读取的缓存数据 在未来的工作单元中重复使用。
您可以从Configuration class
获取会话工厂的对象SessionFactory sessionFactory =
Configuration.buildSessionFactory();
在你的conf中。您已使用AnnotationSessionFactoryBean类
配置了sessionFactorybean id="mySessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
并且您已经设置了所需的会话工厂的一些属性。
HibernateTemplate
是Spring提供的一个类:
Helper类简化了Hibernate数据访问代码。在org.springframework.dao异常层次结构之后自动将HibernateExceptions转换为DataAccessExceptions。
答案 1 :(得分:6)
SessionFactory 是为整个应用程序或整个hibernate应用程序提供会话对象的接口。
通常会有一个 SessionFactory ,可以共享 由所有应用程序线程。 SessionFactory 是线程安全的。
SessionFactory 是可在流程或群集级别的事务之间重复使用的二级数据缓存。
Continue.......
答案 2 :(得分:3)
SessionFactory包含所有hibernate映射信息,它负责在事务中创建和维护hibernate会话。