spring整合hibernate初步

 spring和hibernate整合时,SessionFactory底层的DataSource可以使用spring的ioc注入,然后你在自己的程序中注入SessionFactory

<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
		destroy-method="close">
		<!--将数据源注入 LocalSessionFactoryBean(建立hibernate中的sessionfactory的bean工厂,fw里用的是AnnotationSessionFactoryBean)    -->
		<property name="dataSource" ref="dataSource" />
........
</bean>
 
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url"
			value="jdbc:mysql://localhost:3306/helloworld" />
		<property name="username" value="root" />
		<property name="password" value="root" />
	</bean>

  

使用HibernateTemplate

 

  public class UserDao implements IUserDao {
    HibernateTemplate hibernateTemplate;
    public UserDao() {
    }
    
    public UserDao(SessionFactory sessionFactory) { 
        this.setSessionFactory(sessionFactory);
    }
    public void setSessionFactory(SessionFactory sessionFactory) { 
        this.hibernateTemplate = new HibernateTemplate(sessionFactory); 
   } 
    
    public void insert(User user) {
     
      hibernateTemplate.save(user);
   }

    public User  find(Integer id) {
     User user = (User)hibernateTemplate.get(User.class,id);
        
        return user;
    }
}

 

 使用HibernateDaoSupport

 

         使用HibernateDaoSupport可以简化你管理SessionFactory、HibernateTemplate的工作,因为在HibernateDaoSupport中帮你管理了 SessionFactory、HibernateTemplate ,你只要继承它就ok了

 

 HibernateDaoSupport源代码:

/**
	 * Set the Hibernate SessionFactory to be used by this DAO.
	 * Will automatically create a HibernateTemplate for the given SessionFactory.
	
	 */
public final void setSessionFactory(SessionFactory sessionFactory) {
	  this.hibernateTemplate = createHibernateTemplate(sessionFactory);
	}
protected HibernateTemplate createHibernateTemplate(SessionFactory sessionFactory) {
		return new HibernateTemplate(sessionFactory);
	}

  

 

 Hibernate提供自己的事务管理实现 ,但和spring整合时建议将事务管理交spring来负责,spring提供了:编程式事务管理、声明式事务管理。大多数Spring用户选择声明式事务管理。这是对应用代码影响最小的选择,因此也最符合 非侵入式 轻量级容器的理念。

Spring的声明式事务管理是通过Spring AOP实现的,因为事务方面的代码与Spring绑定并以一种样板式风格使用,不过尽管如此,你一般并不需要理解AOP概念就可以有效地使用Spirng的声明式事务管理。

 

注:具体参考一下《Spring Framework 开发参考手册》声明式事务管理
Spring2.0及以后的版本中声明式事务的配置与之前的版本有相当大的不同。主要差异在于不再需要配置TransactionProxyFactoryBean了。

Spring2.0之前的旧版本风格的配置仍然是有效的;你可以简单地认为新的<tx:tags/>替你定义了TransactionProxyFactoryBean。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值