<!-- 配置sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<!-- 配置事务的传播特性 ,注意方法的命名规则-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="modify*" propagation="REQUIRED"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 那些类的哪些方法参与事务 -->
<aop:config>
<aop:pointcut id="allManagerMethod" expression="execution(* com.bjsxt.usermgr.manager.*.*(..))"/>
<aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/>
</aop:config>
通过上面的配置,Spring和hibernate就集成到了一起。那么在业务逻辑代码里面就可以使用hibernate了。需要让使用hibernate的类继承 HibernateDaoSupport 方法,然后使用由它提供的方法 this.getHibernateTemplate().save(...);来保存数据,或其他方法来操作数据库。这里给个实例,但是上下文读者自己去分析一下。
public class UserManagerImpl extends HibernateDaoSupport{
//使用Spring注入,所以下面提供了一个set方法,所以在Spring的配置文件中需要配置
private LogManager logManager;//写日志的一个类
public void addUser(User user) {
this.getHibernateTemplate().save(user);//直接保存
Log log = new Log();
log.setType("安全日志");
log.setDetail("xxx进入系统");
log.setTime(new Date());
logManager.addLog(log);
}
public void setLogManager(LogManager logManager) {
this.logManager = logManager;
}
}