Spring 整合hibernate使用Template

配置xml

其他配置参考上篇博客

<?xml version="1.0" encoding="UTF-8"?>
...
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTemplate">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>

使用Template(daoimpl层中使用)

使用很简单:获取注入容器的对象hibernateTemplate,调用save的方法。

@Component("u")
public class UserDAOImpl implements UserDAO{

	private HibernateTemplate hibernateTemplate;
	
	
	public HibernateTemplate getHibernateTemplate() {
		return hibernateTemplate;
	}

    @Resource
	public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
		this.hibernateTemplate = hibernateTemplate;
	}


	@Override
	public void save(User user) {
		hibernateTemplate.save(user);
		System.out.println("user add to mysql...");
	}

}

Template原理

Template Method:一种设置模式,模块方法。比如人出生到死亡。出生到死亡看做一个模块,每个人都必须经历,但是每个人的一生经历可以不一样,我们自己可以在其中添加自己的方法。
CallBack:回调/钩子函数,比如下面的callback.doInHibernate(s)方法,在钩子上面挂什么方法。就执行什么方法。加入我们想在其中实现save方法,只需要在其中用内部类的方式写上即可。

简单模拟代码
MyhibernateCallback接口中有一个doInHibernate(Seesion s);

public void MyhibernateTempalte(){
 public void executeWithNativeSeesion(MyhibernateCallback callback){
	Seesion s = null;
	try{
  		s = getSeesion();
  		s.bieganTransaction();
  		
		callback.doInHibernate(s);
		
		s.getTransaction().commit();
		
  }catch(Exception e){
       s.getTransaction().rollback();
  }finally{
		//...
 }
}
public void getSeesion(){
//...
}
public void save( fianl Seesion o){
new MyhibernateTemplate.executeWithNativeSeesion(new MyhibenateCallBack(){
	public void doInhibernate(Seesion s){
		s.save();
}

})
}

} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值