以前每次看到程序中有回调的字眼,头都是很晕(不理解)。
看了一个testCase的例子:
// 实现FilterChain new了 一个 特殊的实例 并且覆盖doFilter 方法
这里我感觉还是相当巧妙的,我不用显式定义 继承FilterChain这个抽象类。
HibernateTemplate 巧妙使用了 HibernateCallback使得dao 的代码非常优雅!
看了一个testCase的例子:
// 实现FilterChain new了 一个 特殊的实例 并且覆盖doFilter 方法
这里我感觉还是相当巧妙的,我不用显式定义 继承FilterChain这个抽象类。
- final FilterChain filterChain = new FilterChain() {
- public void doFilter(final ServletRequest arg0,
- final ServletResponse arg1) throws IOException,
- ServletException {
- System.out.print("run filter");
- }
- };
- try {
- System.out.print("start filter");
- this.filter.doFilter(request, response, filterChain);
- assertNull(response.getRedirectedUrl());
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (ServletException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
public int executeUpdate(final String hql, final Map pMap) { int result = 0; Object o = getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(final Session session) throws HibernateException { int result = 0; Query queryObject = session.createQuery(hql); String[] params = queryObject.getNamedParameters(); for (int i = 0, max = params.length; i < max; i++) { queryObject.setParameter(params[i], pMap.get(params[i])); } result = queryObject.executeUpdate(); return result; } }); Integer i = (Integer) o; result = i.intValue(); return result; }
HibernateTemplate 巧妙使用了 HibernateCallback使得dao 的代码非常优雅!