一、实现原理
Spring整合HibernateTemplate应用了模板方法设计,具体如下,以一个Demo为例,具体实现原理如下:
首先定义一个回调/钩子类,如下:
package com.dao; import org.hibernate.Session; public interface MyHibernateCallBack { public void doHibernate(Session s); }
在HibernateTemplate调用时通过上述回调来执行具体的数据库操作,如下:
package com.dao; import org.hibernate.Session; public class MyHibernateTemplate { public void excuteNativeSession(MyHibernateCallBack callBack){ Session session = getCurrentSession(); try { //采用回调执行具体数据库操作 callBack.doHibernate(session); session.close(); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); } }; //获取当前Session private Session getCurrentSession(){ return null; }; }
模板调用方法
package com.dao; import org.hibernate.Session; import com.vo.Student; public class UserDaoImpl implements UserDao { @Override public void save(final Student student) { new MyHibernateTemplate().excuteNativeSession(new MyHibernateCallBack() { @Override public void doHibernate(Session s) { s.save(student); } }); } @Override public void delete() { // TODO Auto-generated method stub } }