通过回调模式,把相同的部分抽取出来。
//通过构造HibernateCallback的匿名对象,调用doInHibernate方法,可以完成save操作
//关于session对事务的操作就抽取出来了
class Test
{
public static void main(String[] args)
{
Test1 t1 = new Test1();
t1.persistent(new HibernateCallback(){
public void doInHibernate(Session session) throws Exception{
session.save(object);
}
});
}
}
public class Test1
{
public void persistent(HibernateCallback hibernateCallback) {
Session session = HibernateUtils.getSession();
try
{
session.beginTransaction();
hibernateCallback.doInHibernate();
session.getTransaction.commit();
}
catch (Exception e)
{
session.getTransaction().rollback();
throw e;
}
}
}
public interface HibernateCallback
{
public void doInHibernate(Session session) throws Exception;
}