1. 我们现来实现一个Hibernate模板:
package kick.hibernate;
import net.sf.hibernate.HibernateException; import net.sf.hibernate.Session; import net.sf.hibernate.Transaction;
public class HibernateTemplate{ public static Object run(HibernateCallback callback) throws HibernateException{ Session session = null; Transaction tx = null; try { session = HibernateSessionutil.currentSession(); tx = session.beginTransaction(); Object result = callback.execute(session); tx.commit(); session.flush(); return result; } catch (HibernateException e) { tx.rollback(); return null; } finally { HibernateSessionutil.closeSession(); } } 这里类很简单,就是使用一个实现HibernateCallBack接口的一个回掉类,在调用的时候根据具体的需求实现HibernateCallBack类。
2. 回掉接口HibernateCallBack:
package kick.hibernate;
import net.sf.hibernate.HibernateException; import net.sf.hibernate.Session;
public interface HibernateCallBack { Object execute(Session session)throws HibernateException; } 好了,到此为止我们就可以使用这个模板了,可以用如下的方式使用:
HibernateTemplate.run(new HibernateCallback() { public Object execute(Session session) throws HibernateException { session.save(user); return null; } }); 看看,是不是省去了很多代码?
不过这还没有达到想Spring里面那样简单,不要着急,“面包会有的”,我们会达到的。
|