一个简单的HibernateCallback接口的调用

interface HibernateCallback
{
	public Object doInHibernate(Session session);
}
class Session
{
	public Object createQuery(String hql)
	{
		System.out.println(hql);
		return "添加成功";
	}
}
class BackCallTemplate
{
	//这里是执行的方法
	public Object execute(HibernateCallback backCall)
	{
		//这个方法的请求处理交给doExceute;
		return doExecute(backCall);
	}

	//它来做请求处理
	public Object doExecute(HibernateCallback action)
	{
		//首先去判断是否已经有一个session对象,如果没有则创建一个,存在就返回Session对象
		//Session session = (enforceNewSession ?SessionFactoryUtils.getNewSession(getSessionFactory(), getEntityInterceptor()) : getSession());
		Session session = new Session();
		//这里执行架设函数
		return action.doInHibernate(session);
	}
}
public class TempateMain
{
	public static void main(String[] args)
	{
		BackCallTemplate getHibernateTemplate = new BackCallTemplate();
		//我们使用的是回调函数,在回调函数里处理行为
		String str = (String) getHibernateTemplate.execute(new HibernateCallback()
		{
			public Object doInHibernate(Session session)
			{
				return session.createQuery("select count(id) from table");
			}
		});
		System.out.println(str);
	}
}

你可能感兴趣的:(一个简单的HibernateCallback接口的调用)