一、LocalSessionFactoryBean
org.springframework.orm.hibernate.LocalSessionFactoryBean
LocalSessionFactoryBean 并不是真正的SessionFactory,但Spring会自动把对这个Bean的引用转换成LocalSessionFactoryBean里面的SessionFactory。所以我们不需要显示的定义SessionFactory。
Spring加载时,如果发现某个bean实现了FactoryBean接口,就会自动调用FactoryBean.getObject(),返回对应的实例。
当引用这个LocalSessionFactoryBean时,比如ctx.getBean("sessionFactory");Spring返回的不是LocalSessionFactoryBean本身,他会自动调用getObject(),把真正的SessionFactory返回回去。
二、Spring中注入hibernate
1. <bean id='sessionFactory' class='org.springframework.orm.hibernate3.LocalSessionFactoryBean'>
<property name='configLocation' value='classpath:hibernate.cfg.xml' />
</bean>
2. <bean id='dataSource' class='org.springframework.orm.hibernate3.LocalSessionFactoryBean'>
<property name='' value='' />
</bean>
<bean id='sessionFactory' class='org.springframework.orm.hibernate3.LocalSessionFactoryBean'>
<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.format_sql'>true</prop>
</props>
</property>
<property name='mappingResources'>
<list>
<vallue>com/etoak/bean/Student.hbm.xml</value>
</list>
</property>
</bean>
-------------------------------------------------------------------------------------------------------------------------------
<bean id='ht' class='org.springframework.orm.hibernate3.HibernateTemplate'>
<property name='sessionFactory' ref='sessionFactory' />
</bean>