Hibernate SessionFactory

时间:2010-12-30 09:27:21

标签: java hibernate spring

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中做什么

3 个答案:

答案 0 :(得分:8)

应用程序从Session Factory获取会话实例。 SessionFactory主要在应用程序中配置为Singleton, 如果您使用的是Spring,它将在应用程序上下文中配置为singleton。

SessionFactory缓存生成SQL语句和其他 映射Hibernate在运行时使用的元数据。

已在一个工作单元中读取的缓存数据 在未来的工作单元中重复使用。

您可以从Configuration class

获取会话工厂的对象
SessionFactory sessionFactory =
Configuration.buildSessionFactory();  

在你的conf中。您已使用AnnotationSessionFactoryBean类

配置了sessionFactory
bean id="mySessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">

并且您已经设置了所需的会话工厂的一些属性。

HibernateTemplate是Spring提供的一个类:

  

Helper类简化了Hibernate数据访问代码。在org.springframework.dao异常层次结构之后自动将HibernateExceptions转换为DataAccessExceptions。

答案 1 :(得分:6)

  1. SessionFactory 是为整个应用程序或整个hibernate应用程序提供会话对象的接口。

  2. 通常会有一个 SessionFactory ,可以共享 由所有应用程序线程。 SessionFactory 是线程安全的。

  3. SessionFactory 是可在流程或群集级别的事务之间重复使用的二级数据缓存。

                                                                          Continue.......
    

答案 2 :(得分:3)

SessionFactory包含所有hibernate映射信息,它负责在事务中创建和维护hibernate会话。